- 首先将sqljdbc.jar复制粘贴到如下位置:
package db;
import java.sql.Connection;
import java.sql.DriverManager;
public class DBConnection {
/*Driver接口:java.sql.Driver是所有JDBC驱动程序需要实现的接口,这个接口提供给不同的数据库厂商,他们使用的接口名不同。
-:SQLserver的JDBC驱动的类名:"com.microsoft.sqlserver.jdbc.SQLServerDriver"
-:Oracle的JDBC驱动的类名:"oracle.jdbc.driver.OracleDriver"
-:MySQL的JDBC驱动的类名:"com.mysql.jdbc.Driver"*/
public static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
/*JDBC连接数据库的URL表现形式通常分为三个部分(通常用:分开):
1:协议:在JDBC中唯一允许的协议只能为jdbc.
2:子协议:子协议用于标识一个数据库驱动程序
3:子名称:具体看下面
-:连接SQLserver: "jdbc:sqlserver://localhost:1433;DatabaseName=user"
-:连接Oracle: "jdbc:thin:@localhost:1521:ORCL"
-:连接MySQL: "jdbc:mysql://localhost:3306/databasename"*/
public static final String URL = "jdbc:sqlserver://localhost:1433;databaseName=info";
//数据库登录用户名
public static final String USERNAME = "sa";
//数据库登录密码
public static final String PASSWORD = "123456";
public static Connection getConnection(){
Connection conn = null;
if(conn==null){
try {
Class.forName(DRIVER); //加载驱动程序:强制JVM将DRIVER这个类加载入内存,以便将其注册到DriverManager类上去
conn = DriverManager.getConnection(URL,USERNAME,PASSWORD); //连接数据库
} catch (Exception e) {
e.printStackTrace();
}
}
return conn;
}
public static void main(String[] args) {
getConnection();
}
}
为什么要使用Class.forName()?
答:JDBC提供的DriverManager类用于跟踪所有可用的JDBC驱动,并在用户需要时选择合适的驱动提供给用户
但是其跟踪不是自动的,必须由可用的JDBC驱动的Driver类自己在DriverManager上进行注册。但是这个注册过程一般是由Driver类加载的时候自动完成的。
Class.forName(DRIVER); 这句就是为了加载这个类进入内存用的。
DriverManager.getConnection方法—获取数据库连接
该方法用于获得试图建立到指定数据库URL的连接。DriverManager试图从已注册的JDBC驱动程序集中选择一个适当的驱动程序。
语法1 getConnection(String url)
url:访问数据库的URL路径。
示例 下面的代码利用getConnection方法创建与MySQL数据库的连接,并返回连接对象。
public Connection getConnection(){ Connection con=null; try{ Class.forName("com.mysql.jdbc.Driver"); //注册数据库驱动 String url="jdbc:mysql://localhost:3306/test?user=root&password=root"; //定义连接数据库的url con=DriverManager.getConnection(url); //获取数据库连接 System.out.println("数据库连接成功!"); }catch(Exception e){ e.printStackTrace(); } return con; //返回一个连接 }
语法2 getConnection(String url,Properties info)
url:访问数据库的URL路径。
info:是一个持久的属性集对象,包括user和password属性。
示例 下面的代码利用getConnection方法第一种语法格式,创建与MySQL数据库的连接,并返回连接对象。
public Connection getConnection(){ Connection con=null; //定义数据库连接对象 Properties info = new Properties(); //定义Properties对象 info.setProperty("user","root"); //设置Properties对象属性 info.setProperty("password","root"); try{ Class.forName("com.mysql.jdbc.Driver"); //注册数据库驱动 String url="jdbc:mysql://localhost:3306/test"; //test为数据库名称 con=DriverManager.getConnection(url,info); //获取连接数据库的Connection对象 System.out.println("数据库连接成功!"); }catch(Exception e){ e.printStackTrace(); } return con; //返回一个连接 }
语法3 Connection(String url, String user, String password)
url:访问数据库的URL路径。
user:是访问数据库的用户名。
password:连接数据库的密码。
典型应用 下面的代码利用getConnection方法创建与SQL Server数据库的连接,并返回连接对象。与数据库建立连接成功后的运行结果如图1.36所示。
本示例的关键代码如下:
private Connection con; private String user="sa"; //定义连接数据库的用户名 private String password=""; //定义连接数据库的密码 private String className="com.microsoft.sqlserver.jdbc.SQLServerDriver"; private String url="jdbc:sqlserver://localhost:1433;DatabaseName=db_database01"; /**创建数据库连接*/ public Connection getCon(){ try { Class.forName(className); //加载数据库驱动 System.out.println("数据库驱动加载成功!!"); con=DriverManager.getConnection(url,user,password); //连接数据库 System.out.println("成功地获取数据库连接!!"); } catch (Exception e) { System.out.println("创建数据库连接失败!"); con=null; e.printStackTrace(); } return con; }