在写一个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 如有不明白的地方,请给我留言!