?
一次在重裝系統并重新搭建
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.tkk7.com/lpeter/archive/2006/12.html
14:44:38 10-22-2006
?