[英]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.