[英]How to make Java work with SQL Server?
我知道这是一个基本问题,但我似乎无法找到答案而且我道歉,如果这个问题太愚蠢了,但我们走了:
我应该使用SQL Server(到目前为止没问题)和Java(爱java,所以这里也没问题),但现在:我应该怎样做才能使组合工作? 我得到了: JRE 1.6和sqljdbc4.jar ......在我将sqljdbc4.jar放入我的类路径之前,我在其中有sqljdbc.jar并且使用测试程序我得到了这个异常:
21.08.2009 09:26:59 com.microsoft.sqlserver.jdbc.SQLServerConnection <init>
SCHWERWIEGEND: Die Java-Laufzeitumgebung (Java Runtime Environment, JRE), Version 1.6,
wird von diesem Treiber nicht unterstützt. Verwenden Sie die Klassenbibliothek
'sqljdbc4.jar', die Unterstützung für JDBC 4.0 bietet.
java.lang.UnsupportedOperationException: Die Java-Laufzeitumgebung (Java Runtime
Environment, JRE), Version 1.6, wird von diesem Treiber nicht unterstützt. Verwenden
Sie die Klassenbibliothek 'sqljdbc4.jar', die Unterstützung für JDBC 4.0 bietet.
at com.microsoft.sqlserver.jdbc.SQLServerConnection.<init>(SQLServerConnection.java:223)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:840)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at msSqlTest.DB.dbConnect(DB.java:13)
at msSqlTest.TestConnection.main(TestConnection.java:7)
对不起,对于德语...它基本上意味着,我应该使用sqljdbc4.jar,b / c驱动程序不支持我正在使用的JRE。 所以我把sqljdbc4.jar放到我的类路径中,但它不起作用,所以我有点迷茫,我能做什么。
也许有人可以告诉我应该做什么,我该做什么:(
哦是的,这是测试appI使用:
import java.sql.*;
public class TestConnection{
public static void main(String[] args){
// Neue DB und los geht's :)
DB db = new DB();
db.dbConnect("jdbc:sqlserver://localhost:1433/muff", "user", "pw" );
}
}
class DB{
public void dbConnect( String db_connect_string,
String db_userid,
String db_password){
try{
Class.forName( "com.microsoft.sqlserver.jdbc.SQLServerDriver" );
Connection conn = DriverManager.getConnection(
db_connect_string,
db_userid,
db_password);
System.out.println( "connected" );
}
catch( Exception e ){
e.printStackTrace();
}
}
};
你试过SQLServer的jtds
驱动程序吗?
不要将旧的sqljdbc.jar和新的sqljdbc4.jar放在类路径中 - 如果这两个JAR都包含具有相同限定名的类,这将使(或多或少)不可预测使用哪些类。
你说你把sqljdbc4.jar放在你的类路径中 - 你是否从类路径中删除了旧的sqljdbc.jar? 你说“它不起作用”,这究竟是什么意思? 你确定你的类路径中仍然没有旧的JAR(可能没有明确)吗?
对于仍然使用Google搜索的人,请转到\\ blackboard \\ config \\ tomcat \\ conf,然后在wrapper.conf中将另外一行添加到指向sqljdbc4.jar的wrapper.java.classpath中,然后更新wrapper.conf.bb
然后重启黑板服务和tomcat,它应该工作
它只是设置你的java类路径不起作用,你必须在黑板配置文件中设置它以指向你的jar文件与jdbc库
您正在使用的驱动程序是MS SQL Server 2008驱动程序(sqljdbc4.jar)。 正如MSDN页面中所述,它需要Java 6+才能工作。
http://msdn.microsoft.com/en-us/library/ms378526.aspx
sqljdbc4.jar类库需要6.0或更高版本的Java运行时环境(JRE)。
我建议使用我相信的2005驱动程序(sqljdbc.jar)或者Oxbow_Lakes说试用jTDS驱动程序( http://jtds.sourceforge.net/ )。
也许有点晚了,但是使用不同的驱动程序对于用户错误的情况来说是过度的:
db.dbConnect("jdbc:sqlserver://localhost:1433/muff", "user", "pw" );
应该是以下任何一种:
db.dbConnect("jdbc:sqlserver://localhost\muff", "user", "pw" );
(使用命名管道)或:
db.dbConnect("jdbc:sqlserver://localhost:1433", "user", "pw" );
直接使用端口号; 你可以省略1433,因为它是默认端口,留下:
db.dbConnect("jdbc:sqlserver://localhost", "user", "pw" );
我的公司客户端遇到了同样的问题,问题是驱动程序sqljdbc4.jar尝试在数据库和驱动程序之间转换字符。 每次它对数据库发出请求,现在你可以想象650个连接并发,这对我的系统来说非常非常慢,为了避免这种情况,我在连接字符串中添加以下参数:
SendStringParametersAsUnicode=false, then te connection must be something like url="jdbc:sqlserver://IP:PORT;DatabaseName=DBNAME;SendStringParametersAsUnicode=false"
在那之后,系统非常快,因为用户对变化非常满意,我希望我的输入是相同的。
如果您使用的是sqljdbc4.jar,请使用以下代码
ResultSet objResultSet = objPreparedStatement.getResultSet();
if (objResultSet == null) {
boolean bResult = false;
while (!bResult){
if (objPreparedStatement.getMoreResults()){
objResultSet = objPreparedStatement.getResultSet();
bResult = true;
}
}
}
objCachedRowSet = new CachedRowSetImpl();
objCachedRowSet.populate(objResultSet);
if (CommonUtility.isValidObject(objResultSet)) objResultSet.close();
objResultSet = null;
确实。 问题是2008 R2版本非常棘手。 JTD驱动程序似乎适用于某些情况。 在某个服务器中,jTDS适用于2008 R2实例。 但是,在另一台服务器中,我不得不使用Microsoft的JBDC驱动程序sqljdbc4.jar。 但是,它只能在将JRE环境设置为1.6(或更高)后才能工作。
我使用1.5作为其他服务器,所以我花了很多时间在这上面。
棘手的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.