gwn00 2020-02-16
主要作用
一、注册驱动
实际开发中注册驱动会使用如下的方式:
Class.forName("com.mysql.jdbc.Driver");
因为之前的方式会导致驱动注册两次。
二、获得连接
Connection getConnection(String url,String username,String password);
url写法:jdbc:mysql://localhost:3306/jdbc
jdbc:协议
mysql:子协议
localhost:主机名
3306:端口号
url简写:jdbc:mysql:///jdbc
主要作用:
一、创建执行SQL语句的对象
Statement createSatement():执行SQL语句,有SQL注入的漏洞存在。
PreparedStatement prepareStatement(String sql):预编译SQL语句,解决SQL注入的漏洞。
CallableStatement prepareCall(String sql):执行SQL中存储过程
二、进行事务的管理
setAutoCommit(boolean autoCommit):设置事务是否自动提交。
commit():事务提交
rollback():事务回滚
主要作用:
一、执行SQL语句
boolean execute(String sql):执行SQL,执行select语句返回true,否则返回false
ResultSet executeQuery(String sql):执行SQL中的select语句
int executeUpdate(String sql):执行SQL中的insert/update/delete语句
二、执行批处理操作
addBatch(String sql):添加到批处理
executeBatch():执行批处理
clearBatch():清空批处理
结果集:其实就是查询语句(select)语句查询结果的封装。
主要作用:
结果集获取查询到的结果的。
next():针对不同的类型的数据可以使用getXXX()获取数据,通用的获取数据的方法:
getObject();
public void demo4(){
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try{
// 注册驱动:
Class.forName("com.mysql.jdbc.Driver");
// 获得连接:
conn = DriverManager.getConnection("jdbc:mysql:///jdbctest", "root", "abc");
// 创建执行SQL语句的对象:
stmt = conn.createStatement();
// 编写SQL:
String sql = "select * from user";
// 执行SQL:
rs = stmt.executeQuery(sql);
// 遍历结果集:
while(rs.next()){
System.out.println(rs.getInt("uid")+" "+rs.getString("username")+" "+rs.getString("password")+" "+rs.getString("name"));
}
}catch(Exception e){
e.printStackTrace();
}finally{
// 释放资源
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null; //垃圾回收机制,使其更快被回收
}
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
}