关于java连接sql server 2000的问题

关于java连接sql server 2000的问题

在xp机器上面安装了ms sql server2000后,jdbc连接的时候出现了各种问题.上网查询都解决后纪录下来.

1.

[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.

按照网上大家说的办法.打sp3的补丁.到官方网站上下载下来.安装文件以及版本相应的驱动jar包.

网址如下:http://www.microsoft.com/downloads/details.aspx?FamilyID=07287b11-0502-461a-b138-2aa54bfdc03a&DisplayLang=en

注意: 在安装升级包的时候要注意的是下载的安装文件"setup.exe"仅仅是一次解压缩,在这个地方容易让人以为双击就是安装了.需要"安装"一次后再到安装目录找到setup.bat文件执行安装.

同时也要将自己所建工程下的lib包中用到的sqlserver驱动更换成sp3的.

2.

用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。

这一问题一般是由于SQL Server未集成Windows身份验证导致的
这个问题一般是由于sqlserver 没有集成windows身份验证所导致的.第一步先打开SQL Server企业管理器。选择服务器名称上右键选择“编辑SQL Server注册属性”,然后在对话框中选择“使用windows身份验证”。
如果还不行,在执行第二步.第二步: 同样右键,选择“属性”,然后打开“安全性”选项卡。 在选项卡中,选择身份验证为“SQL Server和 Windows ”,其他不变. 这样这个问题就可以解决.

3.

[SQLServer]对象名XXX无效

这个一般是由登陆数据库的用户名的权限造成的。

我在做数据库连接的时候用户名用的是sa.之后换成了自己建的用户,就可以了。如果还不可以就给自己建的用户重新分配一下权限。

 

下面是我测试的jsp代码。

  1. <%@ page contentType="text/html; charset=gb2312" language="java" 
  2. import="java.sql.*"
  3. import="java.io.*"
  4. import="java.sql.Connection"
  5. import="java.sql.Date"
  6. import="java.sql.PreparedStatement"
  7. import="java.sql.ResultSet"
  8. import="java.sql.SQLException"
  9. import="java.sql.Statement"
  10. %>
  11. <html>
  12. <body>
  13. data from SQL SERVER DB:
  14. <hr>
  15. <table>
  16. <%! String trans(String chi)
  17. {
  18. String result=null;
  19. byte temp[];
  20. try
  21. {
  22. temp=chi.getBytes("iso-8859-1");
  23. result=new String(temp);
  24. }
  25. catch(UnsupportedEncodingException e)
  26. {
  27. System.out.println(e.toString());
  28. }
  29. return result;
  30. } %>
  31. <%
  32. Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
  33. Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:4567; DatabaseName=ch12","sx","sx");
  34. Statement stmt=con.createStatement();
  35. ResultSet rst=stmt.executeQuery("select * from contact");
  36. while (rst.next())
  37. {
  38. out.println("<tr>");
  39. out.println("<td>"+trans(rst.getString("userName"))+"</td>");
  40. out.println("<td>"+trans(rst.getString("phone"))+"</td>");
  41. out.println("<td>"+trans(rst.getString("mail"))+"</td>");
  42. out.println("</tr>");
  43. }
  44. rst.close();
  45. stmt.close();
  46. con.close();
  47. %>
  48. </table>
  49. </body>
  50. </html>

开发环境:Eclipse3.3+Sql Server 2000
在练习使用Ibatis开发数据库应用程序时,按照如下步骤:
1)下载SQL Server 2000 driver for JDBC 
2)安装驱动,并将msutil.jar,msbase.jar,mssqlserver.jar添加到classpath
3)写好配置文件,其中用了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
    
运行时却出现如下异常:
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的驱动,结果成功了.

事后仔细对比了SQL Server 2000 与 SQL Server 2005驱动包,惊奇的发现
com.microsoft.sqlserver.jdbc.SQLServerDriver  ---->这个是2000的
com.microsoft.jdbc.sqlserver.SQLServerDriver  -------->这个是2005的
真的汗死!!

你可能感兴趣的:(关于java连接sql server 2000的问题)