JDBC的简介
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,操作不同的数据库需要使用不同的JDBC。
JDBC编程步骤
一、Load the Driver 加载JDBC驱动程序
DriverManager管理一组JDBC驱动程序的基本服务。可以想象成一个管家,通过注册DriverManager可以拿到跟数据库的一根链接。
首先新建一个项目,过程不再赘述。右击项目->Build Path -> Add External Archives。然后选择sqljdbc4.jar
然后实例化SQLServerDriver,打开jar包你会发现它的路径是com.microsoft.sqlserver.jdbc.SQLServerDriver。实例化有两种方法:
1、使用Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Class 与class不同,Class是一个类
2、 new com.microsoft.sqlserver.jdbc.SQLServerDriver();
两种方法都差不多,没啥区别,看个人爱好了。
二、连接数据库
1
Connection conn = DriverManager.getConnection(, , ,);
getConnection有三个参数。
第一个参数是数据库的连接字符串,这个需要根据实际情况的不同而有所不同。
第二个是用户名
第三个是密码
三、Execute the SQL 执行数据库语句
执行数据库语句前要创建一个语句对象。Statement
1
Statement stmt = conn.createStatement();
四、处理得到的结果集
1
ResultSet rs = stmt.executeQuery("select * from dept");
返回来的结果集rs,指针指向第一条数据的前面,所以需要先next一下。
1
while
( rs.next()){
2
3
rs.getString();
4
5
rs.getInt();
6
7
……
8
}
五、关闭数据库
原则上,后打开的先关闭
ResultSet.close
Statement.close
Connection.close
下面是完整代码:
1
import
java.sql.*
;
2
public
class
JTest{
3
4
public
static
void
main(String[] args)
throws
Exception{
5
String JDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
;
6
String connectDB="jdbc:sqlserver://ABYSS-PC\\MYABYSS:64160;DatabaseName=master"
;
7
//
实例化驱动
8
Class.forName(JDriver);
9
String user ="sa"
;
10
String possword = ""
;
11
//
连接数据库
12
Connection conn =
13
DriverManager.getConnection(connectDB, user, possword);
14
//
创建语句对象
15
Statement stmt =
conn.createStatement();
16
//
执行select语句
17
ResultSet rs =
18
stmt.executeQuery("Select * from dept"
);
19
//
循环获取结果集
20
while
( rs.next()){
21
System.out.println(rs.getString("deptno"
));
22
System.out.println(rs.getInt("deptno"
));
23
}
24
//
关闭数据库,遵循后打开先关闭的原则。
25
rs.close();
26
stmt.close();
27
conn.close();
28
}
29
}
JDBC编程大致就这么些步骤,不过以上的代码太不专业了,而且有点问题。实例化驱动、连接数据库、创建语句对象等代码都会抛出异常,假若在程序运行的过程中出现异常而导致程序终止,后面的关闭数据库的语句不会被执行,而且被申请的内存不会被释放,长此以往会导致资源的耗尽。因此这里需要将throws 改为try/catch。
import
java.sql.*
;
public
class
JText {
public
static
void
main(String[] args) {
String JDriver
= "com.microsoft.sqlserver.jdbc.SQLServerDriver"
;
String connectDB
="jdbc:sqlserver://ABYSS-PC\\MYABYSS:64160;DatabaseName=master"
;
String user
="sa"
;
String possword
= ""
;
Connection conn
=
null
;
Statement stmt
=
null
;
ResultSet rs
=
null
;
try
{
//
实例化驱动
Class.forName(JDriver);
//
连接数据库
conn =
DriverManager.getConnection(connectDB, user, possword);
//
创建语句对象
stmt =
conn.createStatement();
//
执行select语句
rs = stmt.executeQuery("Select * from dept"
);
//
循环获取结果集
while
( rs.next()){
System.out.println(rs.getString(
"deptno"
));
System.out.println(rs.getInt(
"deptno"
));
}
}
catch
(ClassNotFoundException e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
catch
(SQLException e) {
//
TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try
{
//
关闭数据库,遵循后打开先关闭的原则。
if
(rs !=
null
){
//
在关闭之前,判断一下是否为空
rs.close();
//
关闭之后 释放资源,这是一个很好的习惯
rs =
null
;
}
if
(stmt !=
null
){
stmt.close();
stmt
=
null
;
}
if
(conn !=
null
){
conn.close();
conn
=
null
;
}
}
catch
(SQLException e){
e.printStackTrace();
}
}
}
}

