2016-09-13 26 views
0

我在紅帽子7服務器上構建Sybase IQ 16.0。在Java程序中運行dbisql

我嘗試在Sybase中使用dbisql批量加載數據。

而且我已經命令在Sybase服務器成功:

dbisql -nogui -c "UID=DBA;PWD=sql;DWN=iqtry;host=172.16.50.137:2643;" -onerror continue READ /EXT_LOAD/Load_Test_Data.SQL

但我需要從項目需求做到這一點的java程序,所以我如下的程序:

import java.io.*; 
import java.sql.*; 
import java.util.*; 
import java.sql.Connection; 
import java.sql.Date; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
public class Test { 
public static void main(String[] args) throws SQLException { 

String dburl = "dbisql -nogui -c 'UID=DBA;PWD=sql;DWN=iqtry;host=172.16.50.137:2643;' -onerror continue READ /sybase/IQ_LOAD/load_DBA.atest.sql"; 

// Connect to Sybase Database 
Connection con = DriverManager.getConnection(dburl); 
Statement statement = con.createStatement(); 
}} 

,我可以編譯在Syabse Server中,但是當我運行這個類時,出現以下錯誤:

Exception in thread "main" java.sql.SQLException: No suitable driver found for

jdbc:sqlanywhere:uid=DBA;pwd=sql;eng=iqtry;database=atest;links=tcpip(host=172.

16.50.137,2643)

at java.sql.DriverManager.getConnection(DriverManager.java:689)

at java.sql.DriverManager.getConnection(DriverManager.java:270)

at Test.main(ConnectIQ.java:30)

從m y問題,我嘗試設置我的當前路徑中的類路徑

set classpath = ./sybase/IQ-16_0/java/sajdbc4.jar

set classpath = ./sybase/IQ-16_0/java/jconn4.jar

但是,一切都無法正常工作。

+0

您在類路徑中沒有正確的驅動程序,或者URL錯誤。還要注意,根據應用程序的運行方式,可能根本不使用環境變量'CLASSPATH'(對於運行Java應用程序的大多數情況實際上是這樣的)。 BTW請注意,顯示的代碼和異常不匹配(因爲異常顯示的dburl值不同於代碼中顯示的值)。 –

回答

0

dbisql實用程序是命令行實用程序,不應與Java一起使用。它的目的是通過像Bash這樣的Shell來使用,或者在GUI環境中使用。

sajdbc4.jar file是SAP IQ的JDBC驅動程序。正如您在CLASSPATH中已經提到的那樣,最好使用其IQDataSource類,該類實現JDBC標準中的DataSource Interface

一個簡單的代碼是:

IQDataSource iqDataSource = new IQDataSource(); 
iqDataSource.setURL(jdbcUrl); 
iqDataSource.setUser(username); 
iqDataSource.setPassword(password); 

另一個提示:記住,SAP智商關係的每個版本與JDBC驅動程序的特定版本。驗證您是否在正確的平臺上使用了正確的版本目標。

希望這會有所幫助。