要点
使用JDBC连接数据库主要分为3个步骤:定义数据库连接字符串,加载数据库驱动和创建数据库连接。
(1)定义数据库连接字符串,其关键代码如下:
String URL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_database04"; //指定URL地址
String user="sa"; //指定用户名
String password=""; //指定密码
private Connection con = null; //定义操作接口变量
private Statement stmt = null; //定义操作接口变量
private ResultSet rs = null; //定义操作接口变量
(2)加载数据库连接的驱动。在Java中使用Class.forName来加载数据库驱动。通过Class.forName()方法注册SQL Server数据库驱动类的关键代码如下:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //注册SQL Server数据库驱动
注意:在加载数据库驱动时,必须将SQL Server数据库驱动包(mssqlserver.jar、msutil.jar、msbase.jar)放置于项目根目录下的WEB-INF\lib文件夹下。
(3)创建数据库的连接。在Java中使用位于java.sql包中的DriverManager类管理JDBC驱动程序的基本服务;通过java.sql包中的Connection接口与特定的数据库进行连接。其语法如下:
Connection con = DriverManager.getConnection(url, name, pwd); //建立数据库连接
实现过程
(1)创建数据库操作类。包括数据库的连接方法、数据的查询方法和数据库的关闭方法。其关键代码如下:
package com.pkh.dao;
import java.sql.*;
public class UserDao {
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db_database04";
String username="sa";
String password="";
private Connection con = null;
private Statement stmt = null;
private ResultSet rs = null;
public UserDao() { //通过构造方法加载数据库驱动
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
} catch (Exception ex) {
System.out.println("数据库加载失败");
}
}
public boolean Connection() { //创建数据库连接
try {
con = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
System.out.println(e.getMessage());
System.out.println("creatConnectionError!");
}
return true;
}
public ResultSet selectStatic(String sql) throws SQLException { //对数据库的查询操作
ResultSet rs=null;
if (con == null) {
Connection();
}
try {
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
public void closeConnection() { //关闭数据库的操作
if (con != null && stmt != null && rs != null) {
try {
rs.close();
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("Failed to close connection!");
} finally {
con = null;
}
}}
}