java连接数据库

150 阅读2分钟

「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」。

JDBC连接步骤

Image.png

Image [1].png

Image [2].png

  1. 加载驱动Class.forName(""); 如何添加驱动文件:导入mysql jar包然后点击build path 点击add to build path.

  2. 获得连接对象Connection Connection connection=DriverManger.getConnect

  3. 写sql语句 String sql ="select id from room"

  4. 创建Statement statement = connection.createStatement();

  5. 执行sql语句

    更新类(更改了表里面数据):delete/update/insert executeUpdate() 返回值:int,表示你影响的行数

    查询(没有改变表里面数据): select
    executeQuery() 返回值:结果集ResultSet

  6. 关闭连接 if (resultSet != null) {

        try {

          resultSet.close();

        } catch (SQLException e) {

          e.printStackTrace();

        }

     }

     if (statement != null) {

        try {

          statement.close();

        } catch (SQLException e) {

          e.printStackTrace();

        }

     }

     if (conection != null) {

        try {

          conection.close();

        } catch (SQLException e) {

          e.printStackTrace();

        }

     }

   }

} JDBC接口核心的API

  • DriverManager类:驱动管理器类,用于管理所有注册的驱动程序
  • registerDriver(driver) : 注册驱动类对象
  • Connection getConnection(url,user,password); 获取连接对象
  • Connection接口: 表示java程序和数据库的连接对象。
  • Statement createStatement() : 创建Statement对像 PreparedStatement prepareStatement(String sql) 创建PreparedStatement对象
  • CallableStatement prepareCall(String sql) 创建CallableStatement对象(调用写好的存储过程)
  • Statement接口: 用于执行静态的sql语句
  • int executeUpdate(String sql) : 执行静态的更新sql语句(DDL,DML)
  • ResultSet executeQuery(String sql) :执行的静态的查询sql语句(DQL)
  • PreparedStatement接口:用于执行预编译sql语句
  • int executeUpdate() : 执行预编译的更新sql语句(DDL,DML)
  • ResultSet executeQuery() : 执行预编译的查询sql语句(DQL)
  • ResultSet接口:用于封装查询出来的数据
  • boolean next() : 将光标移动到下一行
  • getXX() : 获取列的值

PreparedStatement和Statement的不同之处:

  1. 语法不同:
  • PreparedStatement可以使用预编译的sql,只需要发送一次sql语句,后面只要发送参数即可,公用一个sql语句。
  • Statement只能使用静态的sql。
  • delete from student where id=1;
  1. 效率不同:PreparedStatement使用了sql缓冲区,效率要比Statement高。
  2. 安全性不同:PreparedStatement可以有效的防止sql注入,而Statement不能防止sql注入。