top
Loading...
Jbuilder2006連接SQL_Server2000

我的開發環境為:JDK1.5+Jbuilder2006+SQL_Server2000 sp3

首先,配制環境,其中包括下載JDBC FRO Microsft SQL_Server2000的驅動程序(在微軟官方網站下的,是sp3版的,這里就不寫具體地址了,網上挺多的,但注意版本,我下的是sp3)。下載后發現是EXE 文件,雙擊安裝。默認安裝目錄:C:Program FilesMicrosoft SQL Server 2000 Driver for JDBC,其中C:Program FilesMicrosoft SQL Server 2000 Driver for JDBClib目錄下的三個擴展名為.jar是我們要的驅動。然后配制環境變量:

在classpath這個環境變量里加入以下語句:

C:Program FilesMicrosoft SQL Server 2000 Driver for JDBClibmsbase.jar;C:Program FilesMicrosoft SQL Server 2000 Driver for JDBClibmssqlserver.jar;C:Program FilesMicrosoft SQL Server 2000 Driver for JDBClibmsutil.jar;

如果你的機子上正確配制了JDK的環境變量就應該有CLASSPATH這個環境變量,若沒有就新建一個。

其實配環境變量的目的就是讓系統能找到驅動程序,如果不配,執行下面一段代碼時會產生無法找到驅動的異常,導致程序無法執行。

做完上述事情后,我用UltraEdit這個軟件先寫了連接數據庫的代碼來試驗,代碼如下:

/* try to connct SQL_Server database*/import java.sql.*;public class Sql_db_test{Connection con;Statement sta;ResultSet rs;String sql_driver;String sql_url;String user;String pwd;public Sql_db_test(){sql_driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";//驅動sql_url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=manage";//語句一,其中manage是要訪問的數據庫名user="xiaolin";//你要訪問的數據庫用戶名pwd="123456";//訪問數據庫的密碼init();}public void init(){try{Class.forName(sql_driver);//加載驅動System.out.println("driver is ok");con=DriverManager.getConnection(sql_url,user,pwd);System.out.println("connection is ok");sta=con.createStatement();rs=sta.executeQuery("select * from 制衣表");//executeQuerywhile(rs.next())System.out.println(rs.getString("款式"));}catch (Exception e){e.printStackTrace();//printStackTrace();}}public static void main(String[] args){new Sql_db_test();}}

將上邊的代碼保存后,在命令提示行里執行

Javac Sql_db_test.java //編譯正常通過

Java Sql_db_test //產生異常,異常如下

driver is okjava.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.(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 DbTest.init(DbTest.java:32)  at DbTest.(DbTest.java:25)  at DbTest.main(DbTest.java:46)Press any key to continue...

出現上邊錯誤的主要原因是默認的數據庫服務器端口 1433沒有打開,無法直接連接 。

這時你在命令提示行中輸入命令:netstat –an 來查看有沒有tcp:0.0.0.0:1433,如果沒有那就肯定是因為數據庫服務器端口 1433端口沒開。這時你需要下載SQL_Serve20000的sp3補丁,下載安裝后會發現1433端口已經打開了,再次執行程序,順利執行完畢。

上面是在一臺電腦上執行的,接下來我將上面的程序放到另一臺電腦(可認為是客戶機,ip:192.168.1.2),用直連線將兩臺電腦連起來,這樣原來的電腦就變成了數據庫服務器(ip:192.168.1.1)。并且把程序中的語句一中的localhost改為192.168.1.1,其他不變。

執行后又產生establishing socket異常

后來檢查發現,在網上鄰居中根本看不到對方計算機,然后重新設置網絡并打開guest用戶,放開權限。

使網上鄰居中能出現對方計算機,然后再次執行程序,順利執行完畢。

接下來,開始加入Jbuilder2006了,我在Jbuilder中寫了一個連接數據庫的類,其他地方做了相關修改,因為代碼太多,無法在這些出來。這里只把問題寫出來:

沒想到的是,都修改完之后,軟件運行時居然出現下面異常:

java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver    at java.net.URLClassLoader$1.run(Unknown Source)    at java.security.AccessController.doPrivileged(Native Method)    at java.net.URLClassLoader.findClass(Unknown Source)    at java.lang.ClassLoader.loadClass(Unknown Source)    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)    at java.lang.ClassLoader.loadClass(Unknown Source)    at java.lang.ClassLoader.loadClassInternal(Unknown Source)    at java.lang.Class.forName0(Native Method)    at java.lang.Class.forName(Unknown Source)    at Sql_db_test.init(Sql_db_test.java:21)    at Sql_db_test.(Sql_db_test.java:16)    at Sql_db_test.main(Sql_db_test.java:36)

這不是說驅動找不到嗎??為什么??后來在網上一查才知道自己孤陋寡聞,簡直太菜了!!!原來在JBUILDER里也得設置驅動程序的路徑,設置方法如下:

一、打開Jbuilder,選擇Tools-->Configure-->Libraries。

二、然后在左邊的列表框下選擇New,填入:Name:sql,Location:User Home,然后點擊Add,

加入目錄C:Program FilesMicrosoft SQL Server 2000 JDBClib,確定 。

三、Project-->Prject Properties-->Paths-->Required Libraries-->Add

加入剛才添加的User Home/sql確定

四、Enterprise-->Enterprise Setup-->Database Drivers-->Add,加入User Home/sql,

添加之后在列表框中顯示的是sql.config,確定,重新啟動JBuilder

五、Tools-->Database

Pilot-->View-->Options-->Drivers-->Add

填入

Driver class:com.microsoft.jdbc.sqlserver.SQLServerDriver Simple URL:microsoft:sqlserver://localhost:1433;DatabaseName=mybase

確定之后,Tools-->Database Pilot-->New的Driver里選擇

com.microsoft.jdbc.sqlserver.SQLServerDriver

在URL里填入:

microsoft:sqlserver://服務器Ip地址或主機名:1433;DatabaseName=數據庫名

點擊確定,雙擊或點擊+號輸入sql數據庫的用戶名和密碼,就完成了JB與sql的連接!

(T114)

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗