目录
1、JDBC ( Java Database Connectivity ) java数据库连接
2、JDBC API : 供程序员调用的接口与类,集成在java.sql包中
4、PreparedStatement和Statement对比
1、JDBC ( Java Database Connectivity ) java数据库连接
- 是一种用于执行SQL语句的JavaAPI,可以为多种关系型数据库提供统一访问,
- 它由一组用Java语言编写的类和接口组成。
- 有了JDBC,java开发人员只需要编写一次程序,就可以访问不同的数据库.
Java 定义者制定了 JDBC 规范数据库开发商实现接口程序员学习使用标准规范
2、JDBC API : 供程序员调用的接口与类,集成在java.sql包中
- DriverManager类作用:管理各种不同的jDBC驱动
- Connection接口 与特定数据库的连接
- Statement接口 执行sql
- PreparedStatement接口 执行sql
- ResultSet接口 接收查询结果
3、JDBC搭建
- 注册JDBC驱动程序:
- 这需要初始化驱动程序,这样就可以打开与数据库的通信信道。
//加载mysql驱动
// Class.forName("com.mysql.cj.jdbc.Driver");
DriverManager.registerDriver(new Driver());
- 建立与数据库连接:
- 这需要使用DriverManager.getConnection()方法来创建一个Connection对象,它代表一个物理连接的数据库.
String url = "jdbc:mysql://127.0.0.1:3306/数据库名?serverTimezone=Asia/Shanghai";
String user = "root";
String passward = "root";
Connection connection = DriverManager.getConnection(url,user,passward);
-
获得 Satement 执行 sql 语句
Statement statement = connection.createStatement();
- Satement中的方法: Int executeUpdate(String sql) 用于执行ddl语句和dml(增,删,改)语句返回
操作的 行数
// 例如:
Statement statement = connection.createStatement();
statement.executeUpdate("insert into country(cname) values ('"+ name +"')");
- ResultSet executeQuery(String sql); 用于执行查询语句返回一个ResultSet集合
- 获得PrepareStatement执行sql语句
-
在 sql 语句中参数位置使用 占位符 , 使用 setXX 方法向 sql 中 设置参数
-
PrepareStatement ps = connection.prepareStatement(sql);
-
PrepareStatement 中的方法 : Int executeUpdate()用于执行ddl 语句和 dml( 增 , 删 , 改 ) 语句返回操作的 行数
- ResultSetexecuteQuery();用于执行查询语句返回一个ResultSet集合
4、PreparedStatement和Statement对比
4.1、代码的可读性和可维护性.
虽然用PreparedStatement来代替Statement会使代码多出几行,但这样的代码无论从可读性还是可维护性上来说.都比直接用Statement的代码高很多档次:
stmt.executeUpdate("insertintotb_name(col1,col2,col2,col4)values
('"+var1+"','"+var2+"',"+var3+",'"+var4+"')");
perstmt = con.prepareStatement("insertintotb_name(col1,col2,col2,col4)values
(?,?,?,?)");
perstmt.setString(1,var1);
perstmt.setString(2,var2);
perstmt.setString(3,var3);
perstmt.setString(4,var4);
perstmt.executeUpdate();//prestmt是PreparedStatement对象实例
4.2、最重要的一点是极大地提高了安全性.
- PreparedStatement和Statement中的executeQuery()方法中会返回一个ResultSet对象,查询结果就封装在此对象中.
- 使用ResultSet中的next()方法获得下一行数据
- 使用getXXX(Stringname)方法获得值