1。jdbc作用:java语言使用jdbc来操作数据库(java database connectivity)
2。jdbc严格来说是一种规范(java语言用来访问各种关系型数据库的规范)
3。实现数据持久化的主要技术
• jdbc
• jdo
• 第三方框架 hibernate ,mybatis等
4。第一个jdbc应用的开发步骤
• 获得连接(connection)
• 通过连接来创建statement,发送sql
• 关闭资源
5。小结
API:
• DiverManager类:驱动程序管理器,用来管理驱动,并创建连接
• getConnection(URL,userName,password);
• url:jdbc:mysql://localhost:3306(端口号,默认3306)/文件名
• connection接口,代表数据库的连接
• Statement接口:代表声明,用来发送sql语句
• execute(“sql语句”);
6。jdbc开发步骤
• 1.加载驱动
• Class.forName(com.mysql.jdbc.Driver);
• 2.获得连接
• 3.创建Statement
• 4.执行sql
• 5.关闭资源,先关闭statement,再关闭connection
7。Connection接口
• 这个接口代表与数据库的一个连接,使用它可以控制事务,创建Statement
8。Statement接口
• 代表一个声明,使用它可以向数据库发送sql语句
• 主要提供三个方法用于执行特定的sql
• 1.boolean execute(sql);可执行任何sql,如果有记录集则返回true,否则返回false
• int executeUpdate(sql);主要用来执行DML语句(update,delete,insert)返回受影响记录的条数
• ResultSet executeQuery();
• ResultSet接口:用来存储记录的集合
常用方法:
• next();向下移动记录的游标,如还有记录返回true
• getXXX(int);XXX数据类型 int填写字段的位置
• getXXX("column_Name");列名
异常的处理
使用JDBC时需要用到很多资源,如Connection,Statement,ResultSet,使用完成后,无论是否出现异常,都需要保证关闭(释放)这些资源;因此需要在finally中关闭;结果如下;
Connection conn=null;
Statement stat=null;
try{
conn=.....;
stat=.....;
stat.execut(....);
}catch(Exceiption e){
}finally{
stat.close();
conn.close();
}
JDK1.7提供了自动关闭资源的新的异常处理语法;(try-with-resources)
前提要求:需要自动关闭的资源需要实现AutoCloseable接口;语法是
try(定义需要自动关闭的资源){
}catch(){
}
try(Connection conn=DriverManger.getConnection(url,name,pwd);
Statement st=conn.createStatement();){
}catch(){
}
sql注入问题
即使用者可以给程序传入一些sql的片断来达到破坏sql语句的目的;
如何解决sql注入问题?
PreparedStatement;它是Statement的子接口;
PreparedStatement是预先编译的Sql,因此,执行多次相同的sql时,性能更佳;
PreparedStatement还可以处理更多的数据类型;
使用PreparedStatement的步骤
创建PrepareStatement;conn.preparedStatement(sql);
sql:insert into book values(?,?,?);
给ps的点位符赋值,索引从1开始,使用setXXX(index,value)赋值
ps.setString(1,'智能时代');
ps.setInt(96);
ps.setDate(date);
执行ps(以下方法均可使用)
ps.execute();
ps.executeUpdate();
ps.executeQuery();
JDBC的事务控制
JDBC通过Connection来控制事务
conn.setAutoCommit(false);//手动提交事务
conn.commit():提交事务
conn.rollback():回滚事务
什么时侯需要事务
一个功能(业务),例如转帐,购买图书,如果包含多个操作时,需要用到事务;
Date类型的处理
mysql中表示日期的类型有三个Date,time,Timestamp
java中同样也有三个表示时间的类型,分别是Date,Time,Timestamp;这三个类型位于java.sql包;
这个三个类都 是java.util.Date的子类;
使用JDBC时需要用到很多资源,如Connection,Statement,ResultSet,使用完成后,无论是否出现异常,都需要保证关闭(释放)这些资源;因此需要在finally中关闭;结果如下;
Connection conn=null;
Statement stat=null;
try{
conn=.....;
stat=.....;
stat.execut(....);
}catch(Exceiption e){
}finally{
stat.close();
conn.close();
}
JDK1.7提供了自动关闭资源的新的异常处理语法;(try-with-resources)
前提要求:需要自动关闭的资源需要实现AutoCloseable接口;语法是
try(定义需要自动关闭的资源){
}catch(){
}
try(Connection conn=DriverManger.getConnection(url,name,pwd);
Statement st=conn.createStatement();){
}catch(){
}
sql注入问题
即使用者可以给程序传入一些sql的片断来达到破坏sql语句的目的;
如何解决sql注入问题?
PreparedStatement;它是Statement的子接口;
PreparedStatement是预先编译的Sql,因此,执行多次相同的sql时,性能更佳;
PreparedStatement还可以处理更多的数据类型;
使用PreparedStatement的步骤
创建PrepareStatement;conn.preparedStatement(sql);
sql:insert into book values(?,?,?);
给ps的点位符赋值,索引从1开始,使用setXXX(index,value)赋值
ps.setString(1,'智能时代');
ps.setInt(96);
ps.setDate(date);
执行ps(以下方法均可使用)
ps.execute();
ps.executeUpdate();
ps.executeQuery();
JDBC的事务控制
JDBC通过Connection来控制事务
conn.setAutoCommit(false);//手动提交事务
conn.commit():提交事务
conn.rollback():回滚事务
什么时侯需要事务
一个功能(业务),例如转帐,购买图书,如果包含多个操作时,需要用到事务;
Date类型的处理
mysql中表示日期的类型有三个Date,time,Timestamp
java中同样也有三个表示时间的类型,分别是Date,Time,Timestamp;这三个类型位于java.sql包;
这个三个类都 是java.util.Date的子类;