记得以前做数据库的课程设计时,想用JDBC访问SQL Server 2005来着,但用JDBC怎么都连不上,后来放弃了SQL Server选用了MySQL。现在又是同样的问题,在java程序里使用JDBC总是建立连接失败,经过一段时间的搜寻,找到了解决方法,贴出来给广大遇到同样问题的同胞。
1.去下载一个SQL Server用的JDBC驱动。直接去微软下载就行,下载下来是一个exe文件,运行那个exe把文件解压到随便一个文件夹,取里面的sqljdbc4.jar和sqljdbc.jar备用。
2.配置SQL Server 2005 。在SQL Server 2005中,默认不开启TCP/IP协议,此步主要是开启协议并使SQL Server接受远程访问。具体步骤如下:
(1)打开SQLServer配置管理器(SQLServer Configuration Manager),在配置管理器重转到SQL Server 2005 网络配置(SQL Server 2005 Network Configuration)下面的SQLEXPRESS协议(Protocols for SQLEXPRESS)。
(2)双击TCP/IP那一项打开TCP/IP属性。将”已启用(Enable)”那一项置为“是”。切换到“IP 地址”选项卡,将“IP ALL”中的“TCP 端口(TCP Port)”设置为1433,然后确定。
(3)打开SQL Server 外围应用配置器(SQLServer Surface Area Configuration),然后打开“服务和连接的外围应用配置器”,转到SQLEXPRESS->Database Engine->远程连接,选择“本地链接和远程连接”下面的“仅使用TCP/IP”或者“同时使用TCP/IP和named pipes”,这里我选择了前者,然后应用,确定。
(4)重新启动SQLServer服务。
3.测试连接。会的同学请跳过~~
(1)在SQLServer Management Studio Express中建立数据库testDB(名字随便起,数据表也随便),在testDB中建表
- CREATE TABLE user
- (
- ID bigint NOT NULL,
- Name varchar(20) NOT NULL,
- Email varchar(50) NULL
- )
然后随便往表里加几条数据。
(2)建个java application工程(我用的eclipse,其他IDE雷同),把SQLServer驱动导入工程,注意,如果你使用的JDK6,那么导入sqljdbc4.jar,如果是低版本的JDK导入sqljdbc.jar,不要弄错,否则连接时会报错。
(3)使用JDBC访问SQLServer的测试程序代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
package jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Test { private Connection conn = null; public Test() { super(); } public void getConnection() { try { Class .forName("com.microsoft.sqlserver.jdbc.SQLServerDriver") .newInstance(); String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=testDB"; String USER = "sa"; // 根据你自己设置的数据库连接用户进行设置 String PASSWORD = "123"; // 根据你自己设置的数据库连接密码进行设置 conn = DriverManager.getConnection(URL, USER, PASSWORD); } catch (java.lang.ClassNotFoundException ce) { System.out.println("Get Connection error:"); ce.printStackTrace(); } catch (java.sql.SQLException se) { System.out.println("Get Connection error:"); se.printStackTrace(); } catch (Exception e) { System.out.println("Get Connection error:"); e.printStackTrace(); } } public void testConnection() { if (conn == null) this.getConnection(); try { String sql = "SELECT * FROM user"; Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { System.out.print(rs.getString("ID")+" "); System.out.print(rs.getString("Name")+" "); System.out.println(rs.getString("Email")); } rs.close(); stmt.close(); } catch (SQLException e) { System.out.println(e.getMessage()); e.printStackTrace(); } finally { if (conn != null) try { conn.close(); } catch (SQLException e) { } } } public static void main(String[] args) { Test bean = new Test(); bean.testConnection(); } } |
Class.forName(”com.microsoft.sqlserver.jdbc.SQLServerDriver”).newInstance();
String URL = “jdbc:sqlserver://localhost:1433;DatabaseName=数据库名称”;
【编辑推荐】