簡體   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