一次在重装系统并重新搭建
JAVA
运行环境后,为了测试运行环境是否搭建好,写了一个非常简单的
JDBC
程序测试数据库连接。
IDE
:
Eclipse3.2
DB
:
SQLServer2000
Driver
:
MS
的官方驱动:
msbase.jar
、
mssqlserver.jar
、
msutil.jar
源程序如下:
文件名:
SqlServerTest.java
package
test;
import
java.sql.*;
/**
*
@author
lpeter
SQLServer
连接测试
*/
public
class
SqlServerTest {
//
驱动类
static
String
driverClass
=
"com.microsoft.jdbc.sqlserver.SQLServerDriver"
;
//
连接字符串
static
String
url
=
"jdbc:microsoft:sqlserver://127.0.0.1:1433;dataBaseName=Test"
;
//
密码
static
String
password
=
"peter"
;
//
用户名
static
String
username
=
"peter"
;
//
待执行的
SQL
语句
static
String
sql
=
"SELECT * FROM Test"
;
public
static
void
main(String[] args) {
Connection conn =
null
;
PreparedStatement pstmt =
null
;
ResultSet rs =
null
;
try
{
Class.forName(
driverClass
);
conn = DriverManager.getConnection(
url
,
username
,
password
);
pstmt = conn.prepareStatement(
sql
);
rs = pstmt.executeQuery();
while
(rs.next()) {
System.
out
.println(
"OK."
);
}
System.
out
.println(
"OK too."
);
rs.close();
pstmt.close();
conn.close();
}
catch
(ClassNotFoundException e) {
System.
out
.println(
"
驱动类没有找到
."
);
e.printStackTrace();
}
catch
(SQLException e) {
e.printStackTrace();
}
finally
{
if
(rs !=
null
)
//
结果集没有关闭时关闭结果集
try
{
rs.close();
}
catch
(SQLException e) {
e.printStackTrace();
}
if
(pstmt !=
null
)
//
发送对象没有关闭时关闭发送对象
try
{
pstmt.close();
}
catch
(SQLException e) {
e.printStackTrace();
}
if
(conn !=
null
)
//
连接没有关闭时关闭连接
try
{
conn.close();
}
catch
(SQLException e) {
e.printStackTrace();
}
}
}
}
执行这段程序时,出现错误:
java.sql.SQLException
: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(
DriverManager.java:523
)
at java.sql.DriverManager.getConnection(
DriverManager.java:171
)
at test.SqlServerTest.main(
SqlServerTest.java:29
)
出现了这个错误,我马上想到连接字符串有问题。可在网上找了好几个版本都是这样。
后来由于某种偶然原因,我知道了
SQLServer
可以设置查看端口号。步骤如下:
1.
打开企业管理器,依次在控制台根目录
->Microsoft SQL Servers->SQL Server
组,列出一部分数据库服务器。
2.
右击我们要连接的数据库服务器,选择属性,在常规选项卡点击网络配置弹出新窗口。
3.
在启用的协议区域我们选择
TCP/IP
,点击属性按钮,弹出新窗口。在这个窗口有网络协议默认值设置,我在这里看到我的默认端口是:
4067
。因面在使用
1433
连接数据库时出错。
把端口号修改为
4067
即修改:
static
String
url
=
"jdbc:microsoft:sqlserver://127.0.0.1:1433;dataBaseName=Test"
;
为:
static
String
url
=
"jdbc:microsoft:sqlserver://127.0.0.1:4067;dataBaseName=Test"
;
后,执行程序,输出:
OK too.
测试连接成功。
引自:http://www.blogjava.net/lpeter/archive/2006/12.html
14:44:38 10-22-2006