JDBC连接SQL Server数据库[windows验证模式连接+SQL server验证]
都说用JDBC连接数据库会出现很多问题,现总结、汇总一下。
前提是已经正确安装了SQL Server系列数据库并可正常使用(不同版本连接略有区别)。
1、首先,要正确导入sqljdbc.jar到工程[右键工程,点击属性,在弹出的菜单中选择Build Path,添加外部JDR:Add External JARs,找到 sqljdbc4.jar 文件并打开,然后单击 OK 完成构建路径的配置]
2、把sqljdbc\chs\auth\x64下的sqljdbc_auth.dll文件拷贝到:C:\Windows\System32。[32位的x64同理]
3、import java.sql.*;需要导入的包
SQL Server数据库配置事项:
1、因为SQL Server 安装好后,默认协议是没有开启的,所以要打开SQL Server配置管理器中开启:
步骤:运行 开始 → 所有程序 → Microsoft SQL Server 2012 → 配置工具 →SQL Server配置管理器,
2、要允许 除本机以外,其他设备连接到数据库,SQL Server默认是只允许本机连接的。
SQL Server2005,2008 是要在配置工具中,外围应用配置器中,配置服务。
SQL Server2012,是要配置ERIC2012的协议。
3、若采用SQL Server身份验证方式--连接SQL Server,需要设置登录帐号和密码;
步骤:a.SQL Server Management Studio 的对象资源管理器中,右键单击服务器,再单击“属性”
b.在“安全性”页上,选择SQL Server身份验证,
c.展开连接的服务器,展开“安全性”,展开“登录名”,设置sa的密码为abc。
!!记住,设置完后要重新连接。
4、在数据库中,创建一个,database,至少含有一张表用作测试。此处以数据库studentdb,学生表student为例
编写程序,连接和操作数据库
方式一:windows验证模式连接SQL Server
package com.ljheee.sqlserver;
import java.sql.*;
public class SqlServer {
public static void main(String[] args) {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
//数据库URL[即:是要连接那一个数据库]localhost--指定本机;integratedSecurity=true--指定windows验证模式连接数据库studentdb
String dbURL = "jdbc:sqlserver://localhost:1433;integratedSecurity=true; DatabaseName=studentdb";
try {
Class.forName(driver);//加载驱动
con = DriverManager.getConnection(dbURL);//建立连接,返回一个Connection con对象
System.out.println("Connecting Successful!!!!!");//控制台输出Connecting Successful!!!!!
stmt = con.createStatement();//执行对象Statement负责执行SQL语句,由Connection对象产生
rs = stmt.executeQuery("select * from student");//Statement对象stmt执行查询操作,返回结果集
while(rs.next()){ //rs.getInt("id");从结果集rs 的“id”列,获取int型的 值
System.out.println(rs.getInt("id")+"\t"+rs.getString("name")+"\t"+rs.getString("sex"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
try {
rs.close();
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
方式二:采用SQL Server身份验证方式--连接SQL Server
public static void main(String[] args) {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
//数据库URL[即:是要连接那一个数据库]localhost--指定本机;integratedSecurity=true--指定windows验证模式连接
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=studentdb";
try {
Class.forName(driver);//加载驱动
//建立连接,返回一个Connection con对象
con = DriverManager.getConnection(dbURL,"sa","123");//在本机数据库中已设置登录名“sa”,密码“123”
System.out.println("Connecting Successful!!!!!");
stmt = con.createStatement();
rs = stmt.executeQuery("select * from student");
while(rs.next()){
System.out.println(rs.getInt("id")+"\t"+rs.getString("name")+"\t"+rs.getString("sex"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
try {
rs.close(); //关闭资源
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
最常见的问题:
警告: Failed to load the sqljdbc_auth.dll
com.microsoft.sqlserver.jdbc.SQLServerException: 没有为集成身份验证配置驱动程序。
尝试方式:
1、把sqljdbc\chs\auth\x64下的sqljdbc_auth.dll文件拷贝到:C:\Windows\System32。[32位的x64同理]
2、把sqljdbc_auth.dll文件复制到bin文件夹看看,就是JDK的bin,像我的就是C:\Program Files (x86)\jdk1.8.0_65\bin。[在jre文件夹下的bin也复制一个]
还有就是:出现有“此驱动程序不支持JRE1.7,请使用支持JDBC4.0的sqljdbc4.jar的类库”的问题。不同版本驱动,支持的JRE不同,可能需要切换JRE版本。
都说用JDBC连接数据库会出现很多问题,现总结、汇总一下。
前提是已经正确安装了SQL Server系列数据库并可正常使用(不同版本连接略有区别)。
1、首先,要正确导入sqljdbc.jar到工程[右键工程,点击属性,在弹出的菜单中选择Build Path,添加外部JDR:Add External JARs,找到 sqljdbc4.jar 文件并打开,然后单击 OK 完成构建路径的配置]
2、把sqljdbc\chs\auth\x64下的sqljdbc_auth.dll文件拷贝到:C:\Windows\System32。[32位的x64同理]
3、import java.sql.*;需要导入的包
SQL Server数据库配置事项:
1、因为SQL Server 安装好后,默认协议是没有开启的,所以要打开SQL Server配置管理器中开启:
步骤:运行 开始 → 所有程序 → Microsoft SQL Server 2012 → 配置工具 →SQL Server配置管理器,
2、要允许 除本机以外,其他设备连接到数据库,SQL Server默认是只允许本机连接的。
SQL Server2005,2008 是要在配置工具中,外围应用配置器中,配置服务。
SQL Server2012,是要配置ERIC2012的协议。
3、若采用SQL Server身份验证方式--连接SQL Server,需要设置登录帐号和密码;
步骤:a.SQL Server Management Studio 的对象资源管理器中,右键单击服务器,再单击“属性”
b.在“安全性”页上,选择SQL Server身份验证,
c.展开连接的服务器,展开“安全性”,展开“登录名”,设置sa的密码为abc。
!!记住,设置完后要重新连接。
4、在数据库中,创建一个,database,至少含有一张表用作测试。此处以数据库studentdb,学生表student为例
编写程序,连接和操作数据库
方式一:windows验证模式连接SQL Server
package com.ljheee.sqlserver;
import java.sql.*;
public class SqlServer {
public static void main(String[] args) {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
//数据库URL[即:是要连接那一个数据库]localhost--指定本机;integratedSecurity=true--指定windows验证模式连接数据库studentdb
String dbURL = "jdbc:sqlserver://localhost:1433;integratedSecurity=true; DatabaseName=studentdb";
try {
Class.forName(driver);//加载驱动
con = DriverManager.getConnection(dbURL);//建立连接,返回一个Connection con对象
System.out.println("Connecting Successful!!!!!");//控制台输出Connecting Successful!!!!!
stmt = con.createStatement();//执行对象Statement负责执行SQL语句,由Connection对象产生
rs = stmt.executeQuery("select * from student");//Statement对象stmt执行查询操作,返回结果集
while(rs.next()){ //rs.getInt("id");从结果集rs 的“id”列,获取int型的 值
System.out.println(rs.getInt("id")+"\t"+rs.getString("name")+"\t"+rs.getString("sex"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
try {
rs.close();
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
方式二:采用SQL Server身份验证方式--连接SQL Server
public static void main(String[] args) {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
//数据库URL[即:是要连接那一个数据库]localhost--指定本机;integratedSecurity=true--指定windows验证模式连接
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=studentdb";
try {
Class.forName(driver);//加载驱动
//建立连接,返回一个Connection con对象
con = DriverManager.getConnection(dbURL,"sa","123");//在本机数据库中已设置登录名“sa”,密码“123”
System.out.println("Connecting Successful!!!!!");
stmt = con.createStatement();
rs = stmt.executeQuery("select * from student");
while(rs.next()){
System.out.println(rs.getInt("id")+"\t"+rs.getString("name")+"\t"+rs.getString("sex"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
try {
rs.close(); //关闭资源
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
最常见的问题:
警告: Failed to load the sqljdbc_auth.dll
com.microsoft.sqlserver.jdbc.SQLServerException: 没有为集成身份验证配置驱动程序。
尝试方式:
1、把sqljdbc\chs\auth\x64下的sqljdbc_auth.dll文件拷贝到:C:\Windows\System32。[32位的x64同理]
2、把sqljdbc_auth.dll文件复制到bin文件夹看看,就是JDK的bin,像我的就是C:\Program Files (x86)\jdk1.8.0_65\bin。[在jre文件夹下的bin也复制一个]
还有就是:出现有“此驱动程序不支持JRE1.7,请使用支持JDBC4.0的sqljdbc4.jar的类库”的问题。不同版本驱动,支持的JRE不同,可能需要切换JRE版本。