zoukankan      html  css  js  c++  java
  • JDBC操作MySQL数据库,实现最基本的增删改查操作

    JDBC连接MySql的几个主要步骤:

    1. 导入外部驱动包

    mysql-connector-java-8.0.18.jar

    2. 加载驱动

    Class.forName("com.mysql.cj.jdbc.Driver"); 
    

    3. 获取数据库连接对象(Connection)

    //数据库连接信息
    //(报时区错误的解决办法:url + ”&serverTimezone=GMT%2B8”)
    
    String url = "jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8";
    String user = "root";
    String password = "1";
    
    Connection connection = DriverManager.getConnection(url,user,password);
    

    url :
    localhost(代表本机ip,如连接其他电脑上的数据库,请改变ip)
    3306(数据库端口号)
    test(数据库名)
    UTF-8(编码格式)

    4. 创建SQL语句操作对象(PreparedStatement)

    String sql = "select * from student";
    PreparedStatement ps = connection.prepareStatement(sql);
    

    PreparedStatement是Statement的子接口

    PreparedStatement的优点:

    1. 效率高
      使用PreparedStatement执行SQL命令时,命令会被数据库编译和解析,并放到命令缓冲区.以后每当执行同一个 PreparedStatement对象时,预编译的命令就可以重复使用
    2. 代码可读性和可维护性好
    3. 安全性好
      使用PreparedStatement可以防止SQL注入

    5. 执行查询语句并获取结果集(ResultSet)

    ResultSet rs = ps.executeQuery();
    
    //遍历结果集
    while (rs.next()) {
    	System.out.println(rs.getInt(1) + rs.getString(2) + rs.getInt(3));
    }
    

    除了查询语句是executeQuery();其他全部是executeUpdate();

    Statement接口下的方法:
    boolean execute(String sql) : 执行SQL语句,如果返回值是结果集则为true,否则为false
    ResultSet executeQuery(String sql) : 执行SQL语句,返回值为ResultSet
    int executeUpdate(String sql) : 执行SQL语句,返回值为所影响的行数

    6. 关闭连接

    connection.close();
    ps.close();
    rs.close();
    

    增删改核心代码:

    //增加记录
    
    String sql_2 = "insert into student(id,name,age) values(?,?,?)";
    PreparedStatement ps_2 = connection.prepareStatement(sql_2);
    ps_2.setInt(1, 3);
    ps_2.setString(2, "王五");
    ps_2.setInt(3,22);
    
    //更新数据库,返回受影响行数
    
    int row_2 = ps_2.executeUpdate();
    System.out.println("受影响的行数:"+ row_2);
    
    //删除记录
    
    String sql_3="delete from student where id=1";
    PreparedStatement ps_3 = connection.prepareStatement(sql_3);
    
    //更新数据库,返回受影响行数
    
    int row_3 = ps_3.executeUpdate(sql_3);
    System.out.println("受影响的行数:"+ row_3);
    
     //修改记录
     
    String sql_4 = "update student set age = ? where name = ?";
    PreparedStatement ps_4 = connection.prepareStatement(sql_4);
    ps_4.setInt(1,20);
    ps_4.setString(2,"张三");
    
    //更新数据库,返回受影响行数
    
    int row_4 = ps_4.executeUpdate();
    System.out.println("受影响的行数:"+ row_4);
    
  • 相关阅读:
    SNF软件开发机器人-子系统-功能-启用大按钮样式如何配置
    SNF软件开发机器人-子系统-功能-数据录入方式
    SNF软件开发机器人-子系统-功能-功能类型(普通表改为树型表)
    SNF软件开发机器人-子系统-导出-导入功能-多人合作时这个功能经常用到
    SQL SERVER数据库删除LOG文件和清空日志的方案
    打不开磁盘“I:xxx.vmdk”或它所依赖的某个快照磁盘
    chrome浏览器解决跨域问题
    AngularJS判断checkbox/复选框是否选中并实时显示
    非常全的VsCode快捷键
    Oracle&SQLServer中实现跨库查询
  • 原文地址:https://www.cnblogs.com/gkgkgk/p/13522472.html
Copyright © 2011-2022 走看看