已有101人关注
程序无法连接SQL2005数据库《java项目开发案例项目实录》第四章 酒店管理系统
发表在Java图书答疑 2013-01-31
是否精华
版块置顶:
1,已装sqlserver2000,后装2005.
2,2000正常使用,2005无法连接,使用书中的JAR包。
[font color=#FF0000][strong]请教原因,[/font]和解决方案。 
[/strong]
我已经开启所有的2005的服务器选项,和所有的客户端协议

控制台信息如下

java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.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:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at com.mwq.dao.JDBC.<clinit>(JDBC.java:19)
at com.mwq.dao.BaseDao.selectSomeValue(BaseDao.java:62)
at com.mwq.dao.Dao.sUserNameOfNotFreeze(Dao.java:23)
at com.mwq.frame.LandFrame.<init>(LandFrame.java:162)
at com.mwq.DrinkeryManage.<init>(DrinkeryManage.java:16)
at com.mwq.DrinkeryManage$1.run(DrinkeryManage.java:38)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=db_DrinkeryManage
at java.sql.DriverManager.getConnection(DriverManager.java:602)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at com.mwq.dao.JDBC.getConnection(JDBC.java:29)
at com.mwq.dao.BaseDao.selectSomeValue(BaseDao.java:62)
at com.mwq.dao.Dao.sUserNameOfNotFreeze(Dao.java:23)
at com.mwq.frame.LandFrame.<init>(LandFrame.java:162)
at com.mwq.DrinkeryManage.<init>(DrinkeryManage.java:16)
at com.mwq.DrinkeryManage$1.run(DrinkeryManage.java:38)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.mwq.dao.BaseDao.selectSomeValue(BaseDao.java:64)
at com.mwq.dao.Dao.sUserNameOfNotFreeze(Dao.java:23)
at com.mwq.frame.LandFrame.<init>(LandFrame.java:162)
at com.mwq.DrinkeryManage.<init>(DrinkeryManage.java:16)
at com.mwq.DrinkeryManage$1.run(DrinkeryManage.java:38)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
分享到:
精彩评论 5
xiulinzhixing
学分:0 LV1
TA的每日心情
sddddc
2020-11-06 19:34:51
2013-02-01
沙发
java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver,
这是欣想电子商城的控制台关键信息,
总结问题
[font color=#FF0000][strong][font size=5]1,web项目sqlserver2000数据库连接的问题。
2,2005的数据库连接问题, 什么原因,如何解决。[/font][/strong][/font]

欣想电子商城最后的难点分析中有介绍这个问题的方法但是,还是不行,也无法解决jsp中的错误问题。和连接问题


sqlserver数据库连接,现在成了大问题,2000,web项目连接,2005的连接问题,希望,无语您能正面解决,尽可能分析可能出现的原因和解决方法,现在程序发布和演示运行都是一个大问题,希望您能不吝赐教,期待您的回音
xiulinzhixing
学分:0 LV1
TA的每日心情
sddddc
2020-11-06 19:34:51
2013-02-01
板凳
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
出现这个问题是数据库引起的。
首先是因为sqlserver2005默认情况下是禁用了tcp/ip连接。
您可以在命令行输入:telnet localhost 1433进行检查,这时会报错:正在连接到localhost...不能打开到主机的连接,在端口 1433: 连接失败 
启动tcp/ip连接的方法:
打开 \Microsoft SQL Server 2005\配置工具\目录下的SQL Server Configuration Manager--->网络配置选择mssqlserver协议, 然后右边窗口有个tcp/ip协议,然后启动它,把sqlserver服务停了,然后在启动。问题就解决了!
这时在命令行输入:telnet localhost 1433就不会再报错了,窗口显示为一片黑,即为正常

[/FIELDSET]
1,以上是我看那个绿叶老师的解决方案,以此设置 ,在命令行中 telnet localhost 1433 运行成功!
2,在运行酒店系统还是运行不成功。
3,程序没有任何错误,jar包用的是咱们网站上的。控制台信息还是上面信息
4,我的eclipse版本是 Spring Tool Suite Version: 3.1.0.RELEASE  JDK版本是1.6
5,在jdbc.dao 文件中加了我的数据库密码,源程序中是空
6,请求分析原因和解决方案
7,会不会是系统版本低XP, SP2 ???
xiulinzhixing
学分:0 LV1
TA的每日心情
sddddc
2020-11-06 19:34:51
2013-02-01
地板
兄弟们,一个神贴帮我解决了这个问题,希望大家能够分享,彻底终结,sqlserver数据库连接问题。
1,sql2005 设置,按照本帖引用的绿叶老师的方法。
2,下面是jar包设置和环境变量设置。
3,修改代码中的URL,切记2000和2005的设置时不同的。
4,此帖可以结帖了
下面是JAR包的方法和代码修改方法
首先,操作系统中安装好SQL Server 2000/2005,如果系统中都装有2000和2005版,记得停用一个,只开一个行了。

然后,到微软网站下载Microsoft SQL Server 2005 JDBC Driver 1.1,也可以使用这个地址直接下载。

解压sqljdbc_1.1.1501.101_chs.exe,把sqljdbc_1.1复制到%ProgramFiles%(如果系统在C盘则为C:\Program Files)。

设置 Classpath

JDBC 驱动程序并未包含在 Java SDK 中。因此,如果要使用该驱动程序,必须将 classpath 设置为包含 sqljdbc.jar 文件。如果 classpath 缺少 sqljdbc.jar 项,应用程序将引发“找不到类”的常见异常。 
sqljdbc.jar 文件的安装位置如下:

<安装目录>\sqljdbc_<版本>\<语言>\sqljdbc.jar

下面是用于 Windows 应用程序的 CLASSPATH 语句实例:

CLASSPATH =.;%ProgramFiles%\sqljdbc_1.1\chs\sqljdbc.jar

下面是用于 Unix/Linux 应用程序的 CLASSPATH 语句实例:

CLASSPATH =.:/home/usr1/mssqlserver2005jdbc/Driver/sqljdbc_1.1/chs/sqljdbc.jar

注意: 在 Window 系统中,如果目录名长于 8.3 或文件夹名中包含空格,将导致 classpath 出现问题。如果怀疑存在这类问题,应暂时将 sqljdbc.jar 文件移动到名称简单的目录中,例如 C:\Temp,更改 classpath,然后测试这样是否解决了问题。
直接在命令提示符运行的应用程序
在操作系统中配置 classpath。将 sqljdbc.jar 追加到系统的 classpath 中。或者,使用 java -classpath 选项,可以在运行此应用程序的 Java 命令行上指定 classpath。

设置SQL Server服务器

我使用的是SQL Server 2005标准版SP2,这些都默认即可,一般不用配置。如果需要配置端口请看下面。

1、“开始”→“程序”→“Microsoft SQL Server 2005”→“配置工具”→“SQL Server 配置管理器”→“SQL Server 2005 网络配置”→“MSSQLSERVER 的协议”
2、如果“TCP/IP”没有启用,右键单击选择“启动”。
3、双击“TCP/IP”进入属性设置,在“IP 地址”里,可以配置“IPAll”中的“TCP 端口”,默认为1433。
4、重新启动SQL Server或者重启计算机。


创建数据库

打开“SQL Server Management Studio”,登录连接SQL Server服务器,新建数据库,命名为test


在Eclipse中测试

1、打开Eclipse,“文件”→“新建”→“项目”→“Java 项目”,项目名为Test
2、在Eclipse中,选择“窗口”→“首选项...”→“Java”→“已安装的 JRE”,选择已安装的 JRE,点击“编辑”→“添加外部”,选择%ProgramFiles%\sqljdbc_1.1\chs\sqljdbc.jar
3、在Test项目的“JRE 系统库”中可以看见sqljdbc.jar,如果没有可以右键单击项目Test→“构建路径”→“配置构建路径...”→“Java 构建路径”→“库”→“添加外部 JAR...”,选择%ProgramFiles%\sqljdbc_1.1\chs\sqljdbc.jar
4、编写Java代码,如下:

import java.sql.*; 
public class Test {
public static void main(String[] srg) {
   String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";   //加载JDBC驱动
   String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=test";   //连接服务器和数据库test
   String userName = "sa";   //默认用户名
   String userPwd = "123456";   //密码
   Connection dbConn;

   try {
   Class.forName(driverName);
   dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
   System.out.println("Connection Successful!");   //如果连接成功 控制台输出Connection Successful!
   } catch (Exception e) {
   e.printStackTrace();
   }
}
}


注: 
1、因为SQL Express这个版本的服务器默认是禁用的并且端口号没有配置,所以要进行重新设置

2、如果你以前用Java连接SQL Server 2000的话就要注意了:

在SQL Server 2000 中加载驱动和URL路径的语句是

String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sample";

而SQL Server 2005 中加载驱动和URL的语句则为

String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=sample";

如果写法错误将会找不到驱动。
无语_mrkj
学分:3155 LV11
2013-02-01
4L
在Java中连接SQL Server 2000和2005需要使用不同的Jar包,2005数据库的Jar包是一个文件,而2000的是3个文件,对于这些Jar包您都可以到微软的官网中进行下载。
另外,数据库连接的代码也不同,其中包括数据库驱动字符串和URL地址。

对于您上方异常可以进行以下修改:

出现java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver异常信息,说明是没有对应的数据库驱动包,这是因为在从我们的网站中下载的那些Jar包中,给出的是2005的驱动包,而代码中使用的是2000的连接字符串和URL地址,您把代码中的
com.microsoft.[font color=#FF0000]jdbc.sqlserver.[/font]SQLServerDriver修改为
com.microsoft.sqlserver.jdbc.SQLServerDriver
把 jdbc:[font color=#FF0000]microsoft:[/font]sqlserver://127.0.0.1:1433;DatabaseName=db_DrinkeryManage修改为
 jdbc:sqlserver://127.0.0.1:1433;DatabaseName=db_DrinkeryManage
无语_mrkj
学分:3155 LV11
2013-02-01
5L
在我正在回复您的帖子时,您自己已经解决了,并且进行了回复。虽然您已经解决了,不过我的回复还是留在上面吧。
首页上一页 1 下一页尾页 5 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照