欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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();
			}
			
		}
	
	}


运行结果如下

JDBC的工作原理和见解


一些疑问


在Driver类里声明的变量和方法为什么要用static修饰?

因为Driver类里声明了3个静态方法,静态方法是不能调用非静态类变量,static对象和static方法都属于类的成员,他们不属于类的任何实例,被所有实例共享。static语句块又叫“静态代码块”,当JVM加载类时会自动执行static语句中的代码.

我在理解java static关键字时翻阅了一些解析好文,在这里一并贴出,以供参考

点击打开链接

点击打开链接

点击打开链接

点击打开链接