我的開發環境為: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)