问答题 如何通过JDBC访问数据库
【正确答案】
【答案解析】Java数据库连接(Java DataBase Connectivity,JDBC)用于在Java程序中实现数据库操作功能,它提供了执行SQL语句、访问各种数据库的方法,并为各种不同的数据库提供统一的操作接口,java.sql包中包含了JDBC操作数据库的所有类。通过JDBC访问数据库一般有如下几个步骤:
1)加载JDBC驱动器。将数据库的JDBC驱动加载到classpath中,在基于JavaEE的Web应用开发过程中,通常要把目标数据库产品的JDBC驱动复制到WEB-INF/lib下。
2)加载JDBC驱动,并将其注册到DriverManager中。一般使用反射Class.forName(String driveName)。
3)建立数据库连接,取得Connection对象。一般通过DriverManager.getConnection(url,username,passwd)方法实现,其中,url表示连接数据库的字符串,username表示连接数据库的用户名,passwd表示连接数据库的密码。
4)建立Statement对象或是PreparedStatement对象。
5)执行SQL语句。
6)访问结果集ResultSet对象。
7)依次将ResuhSet、Statement、PreparedStatement、Connection对象关闭,释放掉所占用资源,例如rs.close(),con.close()等。为什么要这么做呢?原因在于JDBC驱动在底层通常都是通过网络IO实现SQL命令与数据传输的。
常见笔试题:
1.举出一个用JDBC访问MySQL的例子。
答案:首先,创建Employee表。
create table Employee(
id int primary key,
name varehar(20),
age int
);
其次,创建一个示例程序,如下所示。
import java.sql.*;
public class Test{
public static void main(String[]args)throws Exception{
String user="user1";
String password="pwd1";
String url="jdbc:mysql://localhost:3306/Test";
String driver="com.mysql.jdbc.Driver";
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
try{
Class.forName(driver);
con=DriverManager.getConnection(url, user, password);
stmt=con.createStatement();
stmt.execute("insert into Employee values(1, "James1", 25)");
stmt.execute("insert into Employee values(2, "James2", 26)");
rs=stmt.executeQuery("select*from Employee");
while(rs.next()){
System.out.println(rs.getInt(1)+""+rs.getString(2)+""+rs.getInt(3));
}
}
catch(SQLException e1){
e1.printStackTrace();
}finally{
try{
if(rs!=null)rs.close();
if(stmt!=null)stmt.close();
if(con!=null)con.close();
}catch(SQLException e){
System.out.println(e.getMessage());
}
}
}
}
程序运行结果为:
1 James1 25
2 James2 26
2.JDBC的主要功能有______。
A.创建与数据库的连接 B.发送SQL语句到数据库中
C.处理数据并查询结果 D.以上都是
答案:D。见上面讲解。
3.提供Java存取数据库能力的包是______。
A.java.sql B.java.awt C.java.lang D.java.swing
答案:A。对数据库操作的所有类都在java.sql包中。