JDBC是什么?
JDBC就是使用JAVA语言操作关系数据库的一套API,接口由各数据库厂商实现,即数据库的驱动jar包,我们使用JDBC编程时候,执行代码的是驱动jar包中的具体实现类。使用步骤
// 1.注册驱动
Class.forName("com.mysql.jdbc.Driver"); //将Driver类加载进内存
//2.获取链接
String url="jdbc:mysql://127.0.0.1:3306/dbtest1";
String username="root";
String password="abc123";
Connection conn= DriverManager.getConnection(url,username,password);
//3.定义sql对象
String sql="update employees set name='hgf' where id=1001 ";
//4.获取执行sql对象
Statement stmt = conn.createStatement();
//5.执行sql
int count=stmt.executeUpdate(sql);//受影响行数
//6.处理结果
System.out.println(count);
//7.释放资源
stmt.close();
conn.close();
部分类解释
-
Drivermanager类
1. 注册驱动 Class.forName() 将Driver类加载进内存,Driver类中静态代码块调用Drivermanager.registerDriver(new Driver()) 注册驱动. 现在已经可以省略这步操作。 2. 获取数据库链接 DriverManager.getConnection(url,username,password)返回一个Connection对象
-
Connection类
1.获取执行sql对象 Statement createStatement() //普通执行sql对象 PreoaredStatement prepareStatement(sql) //预编译sql的执行sql对象:防止sql注入 2.管理事务 开启事务:setAutocommit(boolean autoCommit) //true为自动提交事务,false为手动提交事务,即开启事务。 提交事务:commit() 回滚事务:rollback()
try{
//开启事务
conn.setAutoCommit(false);
//两条sql语句同时执行
int count1= stmt.executeUpdate(sql1);
System.out.println(count1);
int count1= stmt.executeUpdate(sql1);
System.out.println(count1);
//提交事务
conn.commit();
}catch (Exception throwables){
//回滚事务
conn.rollback();
throwables.printStackTrace();
}
-
Statement类
执行SQL语句 int executeupdate(sql) :执行DML(对数据的增删改操作)、DDL(对表、库的增删改操作)语句 ResultSet executeQuery(sql) : 执行DQL(对数据的查询操作)语句。返回值为ResultSet结果集对象
-
Result类
获取查询结果 boolean next() : 将光标向前移动一行,有效行返回true,无效行返回false xxx getXxx(参数):获取数据。 xxx:数据类型;如 int getInt(参数);String getString(参数) 参数:int--列的编号(从1开始)。 String--列的名称
ResultSet re = stmt.executeQuery(sql);
ArrayList<employees> array=new ArrayList<>();
while(re.next()){
employees emp=new employees();
int id=re.getInt("id");
String name=re.getString("name");
emp.setId(id);
emp.setName(name);
array.add(emp);
}
System.out.println(array);
-
PreparedStatement类
预编译SQL并执行SQL语句(防止SQL注入问题) //sql注入:连接字符串时候使得条件恒为true //PreparedStatement传入字符串的时候将敏感字符转义,使之成为一个纯字符串;例如转义单引号使之不会成为语法中的单引号。 1)获取PreparedStatement对象 String sql = "SELECT * FROM WHERE username = ? AND password = ?"; //SQL语句中的参数值用占位符?替代 PreparedStatement pstmt = conn.prepareStatement(sql); 2)设置参数值 pstmt.setXxx(参数1,参数2) //给?赋值; Xxx:数据类型 参数1:?的位置编号,从1开始 参数2:具体值 3)执行SQL executeUpdate(); executrQuery(); ps:PreparedStatement的预编译功能(性能高)需要手动开启:seServerPrepStmts=true 在定义url的时候传入参数 url="jdbc:mysql://127.0.0.1:3306/dbtest1?useServerPrepStmts=true"