詳解一個(gè)JDBC實(shí)例
JDBC實(shí)例前提:
1.SQL Server 2000 任意版本 //本人用的是企業(yè)版
2.SQL Server 2000 sp3升級(jí)包
你可以在這里下載http://www.bossed.com.cn/download/detailcp.asp?id=74
3.SQL Server 2000 jdbc 驅(qū)動(dòng) //這個(gè)就需要自己找了!
4.jdk1.4 //以下的例子是該版本
在以上條件滿足的情況下,作以下事情
1.建立新數(shù)據(jù)庫(kù)名為:jspdev ,并在其中建立一個(gè)名為userinfo的表
包括以下幾列(Sno,Sname,Sage,Ssex,Sclass)
2.開(kāi)始編寫你自己的連接數(shù)據(jù)庫(kù)的類(我這里是借鑒他人的版權(quán)不歸我所有),你也可以用自己的方法
- import java.sql.*;
- class Testj{
- public static void main(String args[])
- {
- String RL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=TESTDB";
- String user ="jack";//這里替換成你自已的數(shù)據(jù)庫(kù)用戶名
- String password = "jack";//這里替換成你自已的數(shù)據(jù)庫(kù)用戶密碼
- String sqlStr = "select * from test_student";
- try{ //這里的異常處理語(yǔ)句是必需的.否則不能通過(guò)編譯!
- Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
- System.out.println( "類實(shí)例化成功!" );
- System.out.println("slkdjf");
- Connection con = DriverManager.getConnection(RL,user,password);
- System.out.println( "創(chuàng)建連接對(duì)像成功!" );
- Statement st = con.createStatement();
- System.out.println( "創(chuàng)建Statement成功!" );
- ResultSet rs = st.executeQuery( sqlStr );
- System.out.println( "操作數(shù)據(jù)表成功!" );
- System.out.println( "----------------!" );
- while(rs.next())
- {
- System.out.print(rs.getInt("Sno") + " ");
- System.out.print(rs.getString("Sname") + " ");
- System.out.print(rs.getInt("Sage") + " ");
- System.out.print(rs.getString("Ssex") + " ");
- System.out.println(rs.getString("Sclass"));
- }
- rs.close();
- st.close();
- con.close();
- }
- catch(Exception err){
- err.printStackTrace(System.out);
- }
- }
- }
下面進(jìn)行調(diào)試:
javac Testj.java
java Testj
如果JDBC實(shí)例正確輸出應(yīng)該是:
類實(shí)例化成功!
slkdjf
創(chuàng)建連接對(duì)像成功!
創(chuàng)建Statement成功!
操作數(shù)據(jù)表成功!
----------------!
2000 海拔 21 男 12
注意:這里有幾點(diǎn)要說(shuō)明
1.路徑問(wèn)題:
你必須配置你的classpath路徑否則他在編譯時(shí)會(huì)報(bào)錯(cuò)
- java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
- at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
- at java.security.AccessController.doPrivileged(Native Method)
- at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
- at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
- at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
- at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
- at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
- at java.lang.Class.forName0(Native Method)
- at java.lang.Class.forName(Class.java:141)
- at Test.main(Test.java:11)
你的路徑應(yīng)該是這樣配置:你可以在在安裝jdbc驅(qū)動(dòng)后看那里的幫助文檔(是英文的);
- //這里指在xp系統(tǒng)下
- classpath = .;G:\Microsoft SQL Server 2000 \Driver for JDBC\lib\msbase.jar;
- G:\Microsoft SQL Server 2000 \Driver for JDBC\lib\mssqlserver.jar;
- G:\Microsoft SQL Server 2000 \Driver for JDBC\lib\msutil.jar;
可千萬(wàn)不要寫錯(cuò)喲!
2.sp3補(bǔ)丁包問(wèn)題:
如果你在編譯時(shí)出現(xiàn)下列問(wèn)題 那么你需要下載并安裝sp3補(bǔ)丁包
- java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establis
- ng 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(Unknown Source)
- at java.sql.DriverManager.getConnection(Unknown Source)
- at Test.main(Test.java:14)
3.權(quán)限問(wèn)題
如果你出現(xiàn)類似這樣的問(wèn)題
類實(shí)例化成功!
- slkdjf
- java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]用戶 'jack' 登錄失敗。
- 原因: 未與信任 SQL Server 連接相關(guān)聯(lián)。
- at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
- at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
- at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
- at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
- at com.microsoft.jdbc.sqlserver.tds.TDSLoginRequest.processReplyToken(Unknown Source)
- at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(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:512)
- at java.sql.DriverManager.getConnection(DriverManager.java:171)
- at Testj.main(Testj.java:14)
原困是未設(shè)置SQL Server登錄認(rèn)證模式為混合認(rèn)證模式,因?yàn)镾QL Server默認(rèn)安裝后認(rèn)證模式為WINDOWS認(rèn)證模式,從而導(dǎo)致出錯(cuò)。
JDBC實(shí)例問(wèn)題解決方法:啟動(dòng)SQLSERVER企業(yè)管理器,選擇要進(jìn)行認(rèn)證模式設(shè)置的服務(wù)器。右擊該服務(wù)器,在彈出菜單中選擇屬性,SQL Server將彈出屬性對(duì)話框在屬性對(duì)話框中選擇安全性選項(xiàng),在身份驗(yàn)證處選擇“SQL Server和Windows”,然后確定。
【編輯推薦】