JDBC的工作原理和见解
程序员文章站
2022-07-13 21:11:23
...
JDBC工作整体流程
1.加载驱动
2.建立连接
3.创建语句对象
4.创建SQL语句
5.执行SQL语句
6.处理结果集(只有查询才牵涉到对结果集的处理)
7.关闭连接
JDBC的创建有一些共同特征,为了方便管理.可以把1.加载驱动 2.建立连接 3.关闭连接(因为查询需要用到ResultSet对象而增删改不用,所以这里需要定义两个关闭方法,用到了方法的重载机制)放在一个自己定义的类里,以便需要时调用.代码如下,各个语句需要抛出的异常已经在备注上说明
package csdn.driver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Driver {
private static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
private static String url = "jdbc:sqlserver://localhost:1433;DatabaseName=stuDB";
private static String user = "sa";
private static String password = "a123456";
public static Connection getCon() throws ClassNotFoundException, SQLException{
Class.forName(driver);// ClassNotFoundException
return DriverManager.getConnection(url,user,password);//SQLException
}
public static void closeDB(Statement sta,Connection con) throws SQLException{
if(sta!=null){
sta.close();//SQLException
}
if(con!=null){
con.close();//SQLException
}
}
public static void closeDB(Statement sta,Connection con,ResultSet res) throws SQLException{
if(sta!=null){
sta.close();//SQLException
}
if(con!=null){
con.close();//SQLException
}
if(res!=null){
res.close();//SQLException
}
}
}
再创建一个类,来实现连接数据库的方法,并且编辑sql语句然后执行,实现类与数据库的交互
package csdn.driver;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SqlCon {
Connection con =null;
Statement sta = null;
ResultSet res = null;
public void queryDemo(){
try {
con = Driver.getCon();
sta = con.createStatement();
String Sql = "SELECT [account_id]"
+",[account_no]"
+",[account_amout]"
+"FROM [stuDB].[dbo].[account]"
+"WHERE [account_id]=1 ";
res = sta.executeQuery(Sql);
while(res.next()){
System.out.println("id"+" "+"账户"+" "+"余额");
System.out.print(res.getInt("account_id")+" ");
System.out.println(res.getDouble("account_amout"));
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
Driver.closeDB(sta, con, res);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
运行结果如下
一些疑问
在Driver类里声明的变量和方法为什么要用static修饰?
因为Driver类里声明了3个静态方法,静态方法是不能调用非静态类变量,static对象和static方法都属于类的成员,他们不属于类的任何实例,被所有实例共享。static语句块又叫“静态代码块”,当JVM加载类时会自动执行static语句中的代码.
我在理解java static关键字时翻阅了一些解析好文,在这里一并贴出,以供参考
下一篇: 使用minikube快速部署k8s集群