只有两个表:user和bookmessage。 book类: 添加和修改就不一一进行演示了,接下来介绍PreparedStatement。 PreparedStatement有预编译功能,可以防止sql注入,安全性更高。 执行完sql业务后,关闭使用的资源,要进行判空。 既然我们了解了JDBC连接的过程,那么我们大致可以将其分为三个部分:sql业务操作前为第一部分,准备部分,需要进行注册和连接;sql业务操作为第二部分;最后一部分为关闭资源。那么除第二部分sql业务操作外,其余两部分可以封装在一个工具类中。 注册驱动可以放在静态块中,进行类的初始化: 获取Connection对象: 用stmt可以把pstmt的位置填null,用pstmt可以把stmt的位置填null。 最后附上封装类,整理不易。
JDBC连接过程:
1.导入相关的JDBC驱动jar包;
①:新建一个文件夹,命名为lib;
②:将jar包粘贴至此文件夹;
③:右键jar包,Add to Build Path;
④:完成。
2.注册驱动,把mysql的Driver对象注册到java.sql.Drivermanager中;
Class.forName("com.mysql.jdbc.Driver");
3.建立连接;
Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
4.SQL业务操作;
首先简单介绍一下连接的数据库book:
①:user
②:bookmessage
uid为外键,下面的业务操作只用到表bookmessage。①:Statement;
(1)查询操作:
Statement stmt = null; ResultSet rs = null; List<book> list = new ArrayList<book>(); String sql ="select * from bookmessage"; rs = stmt.executeQuery(sql);//查询 while(rs.next()) { int bid = rs.getInt(1);//bid数据类型为int String name = rs.getString(2);//bookname数据类型为String int uid = rs.getInt(3);//uid数据类型为int //System.out.println(rs.getInt(1)+"t"+rs.getString(2)+"t"+rs.getInt(3));直接打印表的信息; book b = new book(bid,name,uid);//构建book类打印表的信息 list.add(b);//加入book类list } //打印 for(int i=0;i<list.size();i++) { System.out.println(list.get(i).getBid()+"t"+list.get(i).getBookname()+"tt"+list.get(i).getUid()); }
package JDBC; public class book { private int bid; private String bookname; private int uid; public book() { } public book(int bid,String bookname,int uid) { this.bid = bid; this.bookname = bookname; this.uid = uid; } public int getBid() { return bid; } public void setBid(int bid) { this.bid = bid; } public String getBookname() { return bookname; } public void setBookname(String bookname) { this.bookname = bookname; } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } }
(2)删除操作:
Statement stmt = null; String sql ="delete from bookmessage where bid =6"; stmt = conn.createStatement(); int v = stmt.executeUpdate(sql);//添加 修改 删除时 返回受影响的行数; if(v>0) { System.out.println("success"); }else { System.out.println("fail"); }
②:PreparedStatement。
举一个添加的例子:
String sql ="insert into bookmessage values(?,?,?)"; int bid = 7; String bookname ="林清玄散文精选"; int uid = 3; pstmt = conn.prepareStatement(sql); //给定参数位置从左到右依次为1,2,3,4 ~~ pstmt.setInt(1,bid);//第一个?处设置参数bid pstmt.setString(2,bookname);//第二个?处设置参数bookname pstmt.setInt(3,uid);//第三个?处设置参数uid int v = pstmt.executeUpdate(); if(v>0) { System.out.println("success"); }else { System.out.println("fail"); }
5.关闭资源。
if(null != rs) { rs.close(); } if(null != stmt) { stmt.close(); } if(null != pstmt) { pstmt.close(); } if(null != conn) { conn.close(); }
JDBC封装:
第一部分,准备:
static { try { Class.forName(DRIVERPATH); }catch(ClassNotFoundException e) { e.printStackTrace(); } }
public static Connection getConn() { synchronized(DBconUtil.class) { try { if(null == conn || conn.isClosed()) { synchronized(DBconUtil.class) { conn = DriverManager.getConnection(URL,USER,PASSWORD); } } }catch(SQLException e) { e.printStackTrace(); } } return conn; }
关闭资源:
public static void close(Connection con,PreparedStatement pstmt,Statement stmt,ResultSet rs) { try { if(null != rs) { rs.close(); } }catch(SQLException e) { e.printStackTrace(); }finally { try { if(null != stmt) { stmt.close(); } }catch(SQLException e) { e.printStackTrace(); }finally { try { if(null != pstmt) { pstmt.close(); } }catch(SQLException e) { e.printStackTrace(); }finally { //关闭资源 try { if(null != conn) { conn.close(); } }catch(SQLException e) { e.printStackTrace(); } } } } }
DBconUtil类:
package JDBC; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DBconUtil { private static final String URL = "jdbc:mysql://127.0.0.1:3306/book"; private static final String USER = "root"; private static final String PASSWORD = "123456"; private static final String DRIVERPATH = "com.mysql.jdbc.Driver"; private static Connection conn = null; Statement stmt = null; static { try { Class.forName(DRIVERPATH); }catch(ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConn() { synchronized(DBconUtil.class) { try { if(null == conn || conn.isClosed()) { synchronized(DBconUtil.class) { conn = DriverManager.getConnection(URL,USER,PASSWORD); } } }catch(SQLException e) { e.printStackTrace(); } } return conn; } public static void close(Connection con,PreparedStatement pstmt,Statement stmt,ResultSet rs) { try { if(null != rs) { rs.close(); } }catch(SQLException e) { e.printStackTrace(); }finally { try { if(null != stmt) { stmt.close(); } }catch(SQLException e) { e.printStackTrace(); }finally { try { if(null != pstmt) { pstmt.close(); } }catch(SQLException e) { e.printStackTrace(); }finally { //关闭资源 try { if(null != conn) { conn.close(); } }catch(SQLException e) { e.printStackTrace(); } } } } } }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算