1.预处理对象:
(1)PreparedStatement预处理对象时,建议每条sql语句所有的实际参数,都使用逗号分隔
String sql = "insert into sort(sid,sname) values(?,?)";;
PreparedStatement预处理对象代码:
PreparedStatement psmt = conn.prepareStatement(sql)
(2)执行sql语句:
1.int executeUpdate(); --执行insert update delete语句. 2.ResultSet executeQuery(); --执行select语句. 3.boolean execute(); --执行select返回true 执行其他的语句返回false.
(3)设置实际参数:
l void setXxx(int index, Xxx xx) 将指定参数设置为给定Java的xx值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL Xxx类型值。
setString(2, "家用电器") 把SQL语句中第2个位置的占位符? 替换成实际参数 "家用电器"
2.预处理对象executeUpdate方法:
通过与处理对象executeUpdate方法,完成insert/update/delete语句的执行,操作格式如下:
(1)注册驱动(2)获得链接(3)获得与处理对象(4)sql语句占位符设置实际参数
(5)执行sql语句(6)释放资源
3.插入记录:insert:
实现向分类表中插入指定的新分类:
public void demo01() throws Exception { // 1注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 2获取连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root"); // 3获得预处理对象 String sql = "insert into sort(sname) values(?)"; PreparedStatement stat = conn.prepareStatement(sql); // 4 SQL语句占位符设置实际参数 stat.setString(1, "奢侈品"); // 5执行SQL语句 int line = stat.executeUpdate(); System.out.println("新添加记录数:" + line); // 6释放资源 stat.close(); conn.close(); }
3.更新记录update:
现象更新分类表中指定分类id所对应的分类名称:
public void demo02() throws Exception { // 1注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 2获取连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root"); // 3获得预处理对象中 String sql = "update sort set sname=? where sid=?"; PreparedStatement stat = conn.prepareStatement(sql); // 4 SQL语句占位符设置实际参数 stat.setString(1, "数码产品"); stat.setInt(2, 1); // 5执行SQL语句 int line = stat.executeUpdate(); System.out.println("更新记录数:" + line); // 6释放资源 stat.close(); conn.close(); }
4.删除记录delete:
实现删除分类表中指定扽类id 的记录
public void demo03() throws Exception { // 1注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 2获取连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root"); // 3获得预处理对象 String sql = "delete from sort where sid=?"; PreparedStatement stat = conn.prepareStatement(sql); // 4 SQL语句占位符设置实际参数 stat.setInt(1, 1); // 5执行SQL语句 int line = stat.executeUpdate(); System.out.println("删除记录数:" + line); // 6释放资源 stat.close(); conn.close(); }
5.预处理对象executeQuery方法:
通过预处理对象executeQuery方法,完成记录的select语句的执行:
(1)注册驱动(2)获取链接(3)获取预处理对象(4)sql语句占位符设置实际参数
(5)执行sql语句(6)处理结果集(遍历结果集合)(7)释放资源
6.查询记录select
实现查询分类表
public void demo04() throws Exception { // 1注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 2获取连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root"); // 3获得预处理对象 String sql = "select * from sort"; PreparedStatement stat = conn.prepareStatement(sql); // 4 SQL语句占位符设置实际参数 // 5执行SQL语句 ResultSet rs = stat.executeQuery(); // 6处理结果集(遍历结果集合) while( rs.next() ){ //获取当前行的分类ID String sid = rs.getString("sid");//方法参数为数据库表中的列名 //获取当前行的分类名称 String sname = rs.getString("sname"); //显示数据 System.out.println(sid+"-----"+sname); } // 7释放资源 rs.close(); stat.close(); conn.close(); }
实现查询分类表中指定分类名称的记录:
public void demo05() throws Exception { // 1注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 2获取连接 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "root"); // 3获得预处理对象 String sql = "select * from sort where sname=?"; PreparedStatement stat = conn.prepareStatement(sql); // 4 SQL语句占位符设置实际参数 stat.setString(1, "奢侈品"); // 5执行SQL语句 ResultSet rs = stat.executeQuery(); // 6处理结果集(遍历结果集合) while( rs.next() ){ //获取当前行的分类ID String sid = rs.getString("sid");//方法参数为数据库表中的列名 //获取当前行的分类名称 String sname = rs.getString("sname"); //显示数据 System.out.println(sid+"-----"+sname); } // 7释放资源 rs.close(); stat.close(); conn.close(); }
所有记录:
===========================================================================
JDBC工具类:
“获得数据库连接”操作,将在以后的增删改查所有功能中都存在,可以封装工具类JDBCUtils。提供获取连接对象的方法,从而达到代码的重复利用。
该工具类提供方法:public static Connection getConn ()
/* * JDBC工具类 */ public class JDBC { private JDBC(){} private static Connection conn; static{ try{ Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://localhost:3306/day3"; String username="root"; String password="123456"; conn=DriverManager.getConnection(url,username,password); }catch(Exception ex){ throw new RuntimeException(ex+"数据库连接失败"); } } public static Connection getConn(){ return conn; } public static void close(Connection conn,Statement sta,ResultSet rs){ if(rs!=null){ try{ rs.close(); }catch(SQLException ex){} } if(sta!=null){ try{ sta.close(); }catch(SQLException ex){} } if(conn!=null){ try{ conn.close(); }catch(SQLException ex){} } } }