JDBC进阶版本(JDBCVersion2)
这个版本是基于JDBC基础版本上改进而来,在上一个版本主要是详细讲解了最基础的JDBC操作,只适用于对JDBC工作流程的了解。代码比较冗余,而且可拓展性,复用性等不好。此版本对此有所改进,但这并不是最终的版本,后续会相继推出。学习此版本会让你对JDBC有更深入的了解。
一:JAVA工程
二:测试数据库
<1>数据库和表
<2>数据库初始值
三:BaseDao类
package cn.gson.jdbcversion2;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* baseDao类(主要用于创建和关闭连接)
* @author Administrator
*
*/
public class BaseDao {
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/test";
private static final String USERNAME = "root";
private static final String PASSWORD = "1234";
private static Connection con;
/**
* 创建连接的方法
* @return
*/
public static Connection getConnection(){
//1.加载驱动
try {
Class.forName(DRIVER);
con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return con;
}
/**
* 关闭连接的方法
*/
public static void closeConnection(ResultSet rs,PreparedStatement pt,Connection con){
if(rs != null){
try {
rs.close();
rs = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
if(pt != null){
try {
pt.close();
pt = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
if(con != null){
try {
con.close();
con = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
四:CRUTDdao类
package cn.gson.jdbcversion2;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* CRUTDao类(此JDBC是不带参数的查询)
* @author Administrator
*
*/
public class CRUTDao {
private static Connection con;
private static Statement st;
private static PreparedStatement pt;
private static ResultSet rs;
/**
* 执行所有的删,改,增
* @return
*/
public static int allUpdate(String sql){
int row = 0;
con = BaseDao.getConnection();
try {
pt = con.prepareStatement(sql);
row = pt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
BaseDao.closeConnection(rs, pt, con);
}
return row;
}
/**
* 执行所有的查询
*/
public static void allSelect(String sql){
con = BaseDao.getConnection();
try {
pt = con.prepareStatement(sql);
rs = pt.executeQuery();
System.out.println("id"+"\t"+"姓名"+"\t"+"年龄"+"\t"+"性别");
while(rs.next()){
int id = rs.getInt(1);
String stu_name = rs.getString(2);
int stu_age = rs.getInt(3);
String stu_gender = rs.getString(4);
System.out.println(id+"\t"+stu_name+"\t"+stu_age+"\t"+stu_gender);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
BaseDao.closeConnection(rs, pt, con);
}
}
}
五:测试类
<1>执行查询方法
public static void main(String[] args) {
int flag = 0;
String sql = "select * from student";
CRUTDao.allSelect(sql);
System.out.println(flag);
}
<2>执行查询方法的结果
<3>执行新增方法
public static void main(String[] args) {
int flag = 0;
String sql = "insert into student (stu_name,stu_age,stu_gender) values('小胡',18,'男')";
flag = CRUTDao.allUpdate(sql);
System.out.println(flag);//flag不等于0表示成功
}
<4>执行新增方法的结果
<5>执行修改方法
public static void main(String[] args) {
int flag = 0;
String sql = "update student set stu_name='小刘' where stu_gender='男'";
CRUTDao.allSelect(sql);
System.out.println(flag);//flag不等于0表示成功
}
<6>执行修改方法的结果
<7>执行删除方法
public static void main(String[] args) {
int flag = 0;
String sql = "update student set stu_name='小刘' where stu_gender='男'";
CRUTDao.allSelect(sql);
System.out.println(flag);//flag不等于0表示成功
}
<8>执行删除方法的结果
附:需要下载jdbc驱动包