JDBC——idea连接阿里云的mysql进行增删改查操作

1、mysql修改权限

终端登录修改权限

1.1进入数据库
mysql -u"root" -p"你的密码"
在这里插入图片描述

1.2进入mysql
use mysql;
在这里插入图片描述

1.3查看权限
select host,user from user;
root的host原本是localhost将它更改为 %
update user set host =‘%’ where user =‘root’ and host =‘localhost’;
1.4刷新一下权限
flush privileges;
select host,user from user;
在这里插入图片描述

忘记MySQL密码

1、打开宝塔面板mysql的配置修改 添加
skip-grant-tables
在这里插入图片描述
2、重启mysql
在这里插入图片描述
3、修改密码
mysql -uroot -p"你的密码"
update mysql.user set password=password(‘12456’) where user=‘root’;
在这里插入图片描述
如果出现这个提示后

password改authentication_string
update mysql.user set authentication_string=PASSWORD(‘12456’) where User=‘root’;

在这里插入图片描述
修改密码成功
去掉 skip-grant-tables,在服务里重启mysql

2、idea进行增删改查

导入jar包
将jar包拖入到项目目录下
右键点击 Add as Library
在这里插入图片描述
右键点击OK
在这里插入图片描述
创建个ConnectionTest.java
创建连接

  private static Connection createConnection() {
        try {
            return DriverManager.getConnection(
                    "jdbc:mysql://120.78.240.231:3306/demo01?rewriteBatchedStatements=true",
                    "root",
                    "123456");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

.
提前加载驱动类
Class.forName(“com.mysql.cj.jdbc.Driver”);
在这里插入图片描述
查询数据库

List<Object[]> result = show("show databases;");-----这句加在main方法里
 private static List<Object[]> show(String sql, Object... args) {
        //获取连接
        	 Connection connection = createConnection();
      		  if (connection == null) return null;
      		  PreparedStatement statement = null;
       		 ResultSet resultSet = null;
        try {
            // 执行查询语句
            statement = connection.prepareStatement(sql);
            for (int i = args.length; i > 0; ) statement.setObject(i, args[--i]);
            resultSet = statement.executeQuery();
            int columnCount = resultSet.getMetaData().getColumnCount();
            //读取数据
            List<Object[]> result = new ArrayList<>();
            while (resultSet.next()) {
                Object[] row = new Object[columnCount];
                for (int i = 0; i < columnCount; ) row[i] = resultSet.getObject(++i); 
                result.add(row);
            }
            return result;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            close(resultSet);
            close(statement);
            close(connection);
        }
        return null;
    }

关闭

  private static void close(AutoCloseable obj) {
        if (obj != null) try {
            obj.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

三种遍历方式显示---------------写在main里

        //迭代器遍历
        Iterator<Object[]> iterator = result.iterator();
        while (iterator.hasNext()) System.out.println(Arrays.toString(iterator.next()));
        //for-in遍历
        for (Object[] e : result) System.out.println(Arrays.toString(e));
        //for遍历
        for (int i = 0; i < result.size(); i++) System.out.println(Arrays.toString(result.get(i)));

查询表

    private static List<Object[]> query(String sql, Object... args) {
        // 获取连接
        Connection connection = createConnection();
        if (connection == null) return null;

        PreparedStatement statement = null;
        ResultSet resultSet = null;
        try {
            // 执行查询语句
            statement = connection.prepareStatement(sql);
            for (int i = args.length; i > 0; ) statement.setObject(i, args[--i]);
            resultSet = statement.executeQuery();
            int columnCount = resultSet.getMetaData().getColumnCount();

            // 读取数据
            List<Object[]> result = new ArrayList<>();
            while (resultSet.next()) {
                Object[] row = new Object[columnCount];
                for (int i = 0; i < columnCount; ) row[i] = resultSet.getObject(++i); // [0] = (1),
                result.add(row);
            }
            return result;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            close(resultSet);
            close(statement);
            close(connection);
        }
        return null;
    }



    

处理更新和删除

    private static void execute(String sql, Object... args) {
        // 获取连接
        Connection connection = createConnection();
        if (connection == null) return;

        PreparedStatement statement = null;
        try {
            // 执行语句
            statement = connection.prepareStatement(sql);
            for (int i = args.length; i > 0; ) statement.setObject(i, args[--i]);
            statement.execute();

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            close(statement);
            close(connection);
        }
    }

插入数据

    // 插入
    private static Object insert(String sql, Object... args) {
        // 获取连接
        Connection connection = createConnection();
        if (connection == null) return null;

        PreparedStatement statement = null;
        try {
            // 执行插入语句
            statement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
            for (int i = args.length; i > 0; ) statement.setObject(i, args[--i]);
            statement.execute();

            // 获取生成的主键
            ResultSet resultSet = statement.getGeneratedKeys();
            if (resultSet.next()) return resultSet.getObject(1);

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            close(statement);
            close(connection);
        }
        return null;
    }

创建表

   private static void creat() {
        // 获取连接
        Connection connection = createConnection();
        if (connection == null) return;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        try {
            String sql = "create table student(sno int(20),cno int(4),grade int(4),primary key(sno,cno))";
            statement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
            //更新
            statement.execute();
            System.out.println("创建表成功");
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            close(resultSet);
            close(statement);
            close(connection);
        }
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值