在写一个Servlet程序连接数据库SQL SERVER2005,连接代码如下:
1 Connection conn = null;
2 Statement st = null;
3 response.setContentType("text/html;charset=gb2312");
4 PrintWriter out = response.getWriter();
5 try {
6 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
7 conn = DriverManager
8 .getConnection(
9 "jdbc:sqlserver://MY-NOTEBOOK;DatabaseName=BOOKS",
10 "sa", "********");
11 st = conn.createStatement();
12 st.executeUpdate("insert into tblBookInfo(bookBarCode,bookName,bookAuthor,bookPrice,bookIntroduce) values('"
13 + bookBarCode
14 + "','"
15 + bookName
16 + "','"
17 + bookAuthor
18 + "'," + bookPrice + ",'" + bookIntroduce + "')");
19 conn.close();
20 out.println("图书添加成功!");
21 } catch (Exception e) {
22 out.println("发生如下错误:<br>");
23 out.println(e.getMessage());
24 }
报如下错误:
通过端口 1433 连接到主机 MY-NOTEBOOK 的 TCP/IP 连接失败。错误:“Connection refused: connect。请验证连接属性,并检查 SQL Server 的实例正在主机上运行,且在此端口接受 TCP/IP 连接,还要确保防火墙没有阻止到此端口的 TCP 连接。”。 从SQL Server Management Studio里可以正常登录数据库,经过一翻百度、Google后,未果。
经分析发生此故障的原因为数据库系统的TCP/IP网络协议未启动所导致。
解决方法:
打开SQL Server Configuration Manager控制台界面,从左边的树形菜单里选择 SQL Server 2005网络配置 -> MSSQLSERVER 的协议,将右边列出的 TCP/IP 和Named Pipes 都设置为启动状态,再重启启动SQL Server(MSSQLSERVER)服务,测试通过。另:
conn = DriverManager.getConnection( "jdbc:sqlserver://MY-NOTEBOOK:1433;DatabaseName=BOOKS", "sa", "********");
这里写不写端口号都可以连接成功。如果想使用JDBC连接SQL SERVER2005,需要下载JDBC 3.0 For SQL SERVER2005 (
http://www.microsoft.com/downloads/details.aspx?FamilyID=a737000d-68d0-4531-b65d-da0f2a735707&displayLang=zh-cn),安装完后,进入其安装目录X:\Program Files\Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\chs,将sqljdbc4.jar文件复制到
Tomcat安装目录的Lib文件夹里即可正常使用。
测试环境:WIN7,JDK1.6.0_21,JRE6,Apache Tomcat7.02,SQL SERVER2005,JDBC 3.0 For SQL SERVER2005 如有不明白的地方,请给我留言!