最新ssh框架连接sql server 2008数据库的一些列问题
来源:互联网 发布:网络赌球会抓玩家吗 编辑:程序博客网 时间:2024/05/18 00:33
首先用jdbc连接数据库sql server 2000与sql server 2005/2008就有很大的不同。以前连接sql server 2000时需要用到至少三个包,包括mssqlserver.jar/msbase.jar/msutil.jar。但是到了sql server 2005/2008就方便很多,只需要一个包就可以搞定,sqljdbc.jar或者sqljdbc4.jar。具体的可以看看microsoft的官网上对jdbc驱动的说法。这两个包的选择也很多特点,如果项目必须在JDK 1.6 上运行,即使该应用程序不使用 JDBC 4.0 功能,也应使用 sqljdbc4.jar。
jdbc 4.0 for sql server下载地址:http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774
在完成搭建项目框架的过程中,也遇到过很多问题。
异常一:java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
这是由于更换了jdbc的jar包,新的jar中没有com.microsoft.jdbc.sqlserver.SQLServerDriver,所以必须换成sql server 2008相应的dviver。之前使用的SQL Server 2000 JDBC driver是:"com.microsoft.jdbc.sqlserver.SQLServerDriver",而SQL Server 2005 and 2008 JDBC driver必须使用:"com.microsoft.sqlserver.jdbc.SQLServerDriver"。同时,URL前缀也有相应的改变,SQL Server 2000之前使用"jdbc:microsoft:sqlserver://",SQL Server 2005 and 2008使用“jdbc:sqlserver://"。而且自Microsoft SQL Server JDBC Driver 1.2后支持使用数据库实例名进行连接,如:jdbc:sqlserver://[serverName[/instanceName][:portNumber]][;property=value[;property=value]]。
综上所述,使用jdbc连接sql server 2005和2008,必须做一下处理:
Driver更换成:com.microsoft.sqlserver.jdbc.SQLServerDriver
url前缀更换成:jdbc:sqlserver://
异常二:此驱动程序不支持 Java Runtime Environment (JRE) 1.7 版。请使用支持 JDBC 4.0 的 sqljdbc4.jar 类库。
这个花费了我很多时间去尝试,第一次遇到是使用tomcat服务器,修正之后又换成jboss服务器,也就是第二次,这两次都遇到了这个问题。当第一次遇到这个问题之后,我上网查了很多资料,我也照着这些资料上的处理方法处理了,但是没有比较好的效果。首先是因为使用jdbc连接sql server 2008,必须换用新的jar包,所以在microsoft的官网上下载了jdbc 4.0 for sql server。在下载下来的压缩包中,可以找到sqljdbc.jar或者sqljdbc4.jar,我先将这两个jar包都放在了项目的classpath中,运行出现这个异常。根据资料的说明,将sqljdbc.jar从classpath中删除,但是异常依然存在。然后又按照资料的说法将sqljdbc4.jar放到了jdk目录中,目录路径为jdk/jre/lib/ext,这次使用tomcat发布应用,应用成功的运行了。但是我将项目发给同事,让他试试,结果他将jar包放到classpath中就可以了,不必将jar包放到jdk中。
第二次出现此异常,上述运行成功的项目应用使用jboss来发布,结果又出现了此异常。这次我将jar包放入jboss的lib中,依旧有此异常。之后我查看发布到jboss中的项目,发现在项目的WEB-INF/lib中存在sqljdbc.jar,应该是之前将此jar包从classpath中删除,但是没有从lib包中删除,所以再次将sqljdbc.jar从lib文件目录中删除,再次运行项目,项目可以成功运行。不用将jar包放入tomcat和jboss的目录中,也不用放入jdk目录中,也跟jar的顺序无关。
异常三:java.lang.IllegalArgumentException: URI scheme is not “file”?
这个异常是由这两句代码引起的。
URL url = QueryParser.class.getResource(Querys.QUERY_FILE_PATH);
InputStream in = new FileInputStream(new File(url.toURI())); 可以理解为对于使用getgetResource方法获得文件url,两种服务器对url的前缀做出了不同的处理。
url的前缀模式不止一种,比如file//和http://。对于new File(url.toURI())这条语句,url的前缀必须是file//,所以对于语句new File(new URI("file:///etc/passwd"))能运行,而对于语句new File(new URI("http://local
附录:
配置hibernatge方言(Hibernate Dialect):
参考hibernate官网上的配置,可以看到一些列数据库以及其相应的方言,sql server 2008的hibernate方言是org.hibernate.dialect.SQLServer2008Dialect。
参考资料:
1. http://msdn.microsoft.com/en-us/library/aa342325.aspx
2. http://www.tutorialspoint.com/hibernate/hibernate_configuration.htm
- 最新ssh框架连接sql server 2008数据库的一些列问题
- 关于PowerBuilder连接SQL Server数据库的一些问题
- 关于PHP5.6连接SQL Server 2008 R2数据库驱动及一些问题
- 远程连接SQL SERVER数据库,连接不上的问题
- sql server identity 列的一些方法
- SQL server 数据库的连接
- SQL Server 2008 转换为 SQL 2005 数据库的一些问题
- sql server 数据库设计表的一些小问题
- 用SQL Server 身份验证无法连接数据库的问题
- Win7远程连接SQL Server数据库出现的问题
- hibernate3.5连接SQL SERVER数据库的驱动问题
- 解决连接SQL Server 2005数据库的问题
- jsp连接不上sql server数据库的问题分析
- 解决SQL Server 2005数据库无法连接的问题
- .java 连接sql server 数据库可能出现的问题
- 连接SQL Server 2005数据库需要注意的问题
- ASP.NET连接Sql Server 数据库的问题
- 解决SQL Server管理器无法连接远程数据库的问题
- GridView(Asp.net)事件过程详解记录
- VC++中的DUMPBIN 工具用来查看PE(可移植执行体)文件(EXE、dll。。。)
- c# WinForm调用控制台
- Linux内核源码分析方法
- NYOJ138 找球号2(续)
- 最新ssh框架连接sql server 2008数据库的一些列问题
- 函数指针和指针函数
- shell中(())双括号运算符
- C/C++常用的字符串处理函数
- WCF服务(一)“配置服务引用”对话框
- C++和Objective-C混编(官方文档翻译)
- 行为型模式之中介者模式、调停者模式(Mediator)
- HDU2077:汉诺塔IV
- 输出100以内的完数