繁体   English   中英

如何使Java与SQL Server一起使用?

[英]How to make Java work with SQL Server?

我知道这是一个基本问题,但我似乎无法找到答案而且我道歉,如果这个问题太愚蠢了,但我们走了:

我应该使用SQL Server(到目前为止没问题)和Java(爱java,所以这里也没问题),但现在:我应该怎样做才能使组合工作? 我得到了: JRE 1.6sqljdbc4.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM