目录
问题:PreparedStatement和Statement的区别
1. JDBC介绍
JDBC(Java Data Base Connection),Java中提供的一套操作数据库的API接口,用于java语言连接数据库,进行数据操作。
2. 常用API组件
- DriverManager:这个类是驱动管理类,管理一系列数据库驱动程序,用于建立和数据库的连连接;
- Connection:该接口具有接触数据库所有的方法,表示和数据库通信的上下文对象;
- Statement:该对象将SQL提交的数据库;
- ResultSet:SQL查询语句的结果集通过resultSet返回给用户;
- SQLException:该类是和数据库交互中任何错误。
3. JDBC使用
3.1 引入MySQL驱动
通过maven引入MySQL的驱动依赖
<!--MySQL的驱动依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
3.2 jdbc连接数据库编程
public class JDBC {
public static void main(String[] args) {
try {
//加载数据库驱动 MySQL-> com.mysql.jdbc.Driver
Class.forName("com.mysql.jdbc.Driver");
//连接数据库
Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jing", "root", "123456");
System.out.println("连接成功");
//获取Statement结果
Statement statement = connection.createStatement();
//修改数据
String sql1 = "update student set Sname='susu' where SID=5 ";
int i = statement.executeUpdate(sql1);
//查询数据库
String sql = "select * from student";
ResultSet resultSet = statement.executeQuery(sql);
//对结束处理
while (resultSet.next()) {
String sname = resultSet.getString("Sname");
System.out.println(sname);
}
//关闭资源
resultSet.close();
statement.close();
connection.close();
} catch (Exception e) {
System.out.println("连接失败");
e.printStackTrace();
}
}
}
DriverManager管理连接
连接数据库时,getConnection(String url,String user, String password)方法返回Connection类型,其中的参数表示:
- url:jdbc:mysql://127.0.0.1:3306/jing
- <顶级协议jdbc:二级协议数据库://本地IP地址:数据库端口/数据库名>
- user:用户名
- password:密码
编程步骤
- 引入mysql-connector-java依赖包
- 引入MySQL驱动
- DriverManager连接数据库获取Connection对象
- 通过Connection获取Statement对象进行SQL操作
- 如果是查询操作处理结果集:ResultSet
- 关闭资源
4. 常用API使用
4.1 Connection接口:数据库连接的对象
获取Statement对象:
PreparedStatement prepareStatement(String sql) :获取PreparedStatement对象
Statement createStatement() :获取Statement对象
CallableStatement prepareCall(String sql) :获取CallableStatement对象
以connection.的方式调用。
处理事务:
void commit() 提交事务
4.2 Statement接口:用来执行SQL语句
boolean execute(String sql):提交SQL语句 返回Boolean类型 可以提交变更操作(插入、删除、修改)
int executeUpdate(String sql) :提交执行DML语言,返回值是int,返回结果表示影响数据库数据行数
ResultSet executeQuery(String sql):执行查询操作,返回的结果在ResultSet中
4.3 ResultSet():返回结果集
boolean next():判断是否还有数据,每调用一次获取的是数据库对应的一行记录
问题:PreparedStatement和Statement的区别
//获取Statement结果
Statement statement = connection.createStatement();
//修改数据
String sql1 = "update student set Sname='susu' where SID=5 ";
int i = statement.executeUpdate(sql1);
//对比PreparedStatement
String sql2="update student set Sname = ? where SID = ?";
PreparedStatement preparedStatement = connection.prepareStatement(sql2);
preparedStatement.setString(1,"susu");
preparedStatement.setString(2,"5");
preparedStatement.execute();
PreparedStatement采用预编译机制处理,SQL和参数分别传递,SQL上参数的位置通过占位符'?'处理,要特别注意,preparedStatement.setString 起始位置为1 。
以上都是学习过程中的知识点总结,如果有错误或者有疑问,欢迎指正交流吖~~