在xp機(jī)器上面安裝了ms sql server2000后,jdbc連接的時(shí)候出現(xiàn)了各種問(wèn)題.上網(wǎng)查詢(xún)都解決后紀(jì)錄下來(lái).
1.
[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
按照網(wǎng)上大家說(shuō)的辦法.打sp3的補(bǔ)丁.到官方網(wǎng)站上下載下來(lái).安裝文件以及版本相應(yīng)的驅(qū)動(dòng)jar包.
網(wǎng)址如下:http://www.microsoft.com/downloads/details.aspx?FamilyID=07287b11-0502-461a-b138-2aa54bfdc03a&DisplayLang=en
注意: 在安裝升級(jí)包的時(shí)候要注意的是下載的安裝文件"setup.exe"僅僅是一次解壓縮,在這個(gè)地方容易讓人以為雙擊就是安裝了.需要"安裝"一次后再到安裝目錄找到setup.bat文件執(zhí)行安裝.
同時(shí)也要將自己所建工程下的lib包中用到的sqlserver驅(qū)動(dòng)更換成sp3的.
2.
用戶(hù) 'sa' 登錄失敗。原因: 未與信任 SQL Server 連接相關(guān)聯(lián)。
這一問(wèn)題一般是由于SQL Server未集成Windows身份驗(yàn)證導(dǎo)致的
這個(gè)問(wèn)題一般是由于sqlserver 沒(méi)有集成windows身份驗(yàn)證所導(dǎo)致的.第一步先打開(kāi)SQL Server企業(yè)管理器。選擇服務(wù)器名稱(chēng)上右鍵選擇“編輯SQL Server注冊(cè)屬性”,然后在對(duì)話(huà)框中選擇“使用windows身份驗(yàn)證”。
如果還不行,在執(zhí)行第二步.第二步: 同樣右鍵,選擇“屬性”,然后打開(kāi)“安全性”選項(xiàng)卡。 在選項(xiàng)卡中,選擇身份驗(yàn)證為“SQL Server和 Windows ”,其他不變. 這樣這個(gè)問(wèn)題就可以解決.
3.
[SQLServer]對(duì)象名XXX無(wú)效
這個(gè)一般是由登陸數(shù)據(jù)庫(kù)的用戶(hù)名的權(quán)限造成的。
我在做數(shù)據(jù)庫(kù)連接的時(shí)候用戶(hù)名用的是sa.之后換成了自己建的用戶(hù),就可以了。如果還不可以就給自己建的用戶(hù)重新分配一下權(quán)限。
下面是我測(cè)試的jsp代碼。
- <%@ page contentType="text/html; charset=gb2312" language="java"
- import="java.sql.*"
- import="java.io.*"
- import="java.sql.Connection"
- import="java.sql.Date"
- import="java.sql.PreparedStatement"
- import="java.sql.ResultSet"
- import="java.sql.SQLException"
- import="java.sql.Statement"
- %>
- <html>
- <body>
- data from SQL SERVER DB:
- <hr>
- <table>
- <%! String trans(String chi)
- {
- String result=null;
- byte temp[];
- try
- {
- temp=chi.getBytes("iso-8859-1");
- result=new String(temp);
- }
- catch(UnsupportedEncodingException e)
- {
- System.out.println(e.toString());
- }
- return result;
- } %>
- <%
- Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
- Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:4567; DatabaseName=ch12","sx","sx");
-
- Statement stmt=con.createStatement();
- ResultSet rst=stmt.executeQuery("select * from contact");
- while (rst.next())
- {
- out.println("<tr>");
- out.println("<td>"+trans(rst.getString("userName"))+"</td>");
- out.println("<td>"+trans(rst.getString("phone"))+"</td>");
- out.println("<td>"+trans(rst.getString("mail"))+"</td>");
- out.println("</tr>");
- }
- rst.close();
- stmt.close();
- con.close();
- %>
- </table>
- </body>
- </html>
開(kāi)發(fā)環(huán)境:Eclipse3.3+Sql Server 2000
在練習(xí)使用Ibatis開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序時(shí),按照如下步驟:
1)下載SQL Server 2000 driver for JDBC
2)安裝驅(qū)動(dòng),并將msutil.jar,msbase.jar,mssqlserver.jar添加到classpath
3)寫(xiě)好配置文件,其中用了java property文件.
//file:database.properties
jdbc.driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
jdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=test;SelectMethod=cursor
jdbc.username=sa
jdbc.password=sa
運(yùn)行時(shí)卻出現(xiàn)如下異常:
ERROR - JakartaCommonsLoggingImpl.error(19) | SimpleDataSource: Error while loading properties.
Cause: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at com.ibatis.common.resources.Resources.classForName(Resources.java:244)
at com.ibatis.common.resources.Resources.instantiate(Resources.java:260)
at com.ibatis.common.jdbc.SimpleDataSource.initialize(SimpleDataSource.java:199)
at com.ibatis.common.jdbc.SimpleDataSource.<init>(SimpleDataSource.java:116)
at com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory.initialize(SimpleDataSourceFactory.java:31)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser$9.process(SqlMapConfigParser.java:318)
at com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:111)
at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:95)
at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:92)
at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:92)
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:62)
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:50)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:81)
at com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:62)
at Ibatis.Test.<clinit>(Test.java:22)
最后在師兄幫助下,下了SQL Server 2005的驅(qū)動(dòng),結(jié)果成功了.
事后仔細(xì)對(duì)比了SQL Server 2000 與 SQL Server 2005驅(qū)動(dòng)包,驚奇的發(fā)現(xiàn)
com.microsoft.sqlserver.jdbc.SQLServerDriver ---->這個(gè)是2000的
com.microsoft.jdbc.sqlserver.SQLServerDriver -------->這個(gè)是2005的
真的汗死!!
posted on 2008-03-10 14:15
何克勤 閱讀(1114)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
J2SE