在Java程序中运行dbisql

时间:2016-09-13 07:11:10

标签: java jdbc classpath sybase-iq

我在red-hat 7服务器上构建了一个Sybase-IQ 16.0。

我尝试在Sybase中使用dbisql批量加载数据。

我已经通过Sybase服务器中的命令成功了:

  

dbisql -nogui -c“UID = DBA; PWD = sql; DWN = iqtry; host = 172.16.50.137:2643;” -onerror继续阅读/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中编译,但是当我运行这个类时,我遇到了以下错误:

  

线程“main”中的异常java.sql.SQLException:找不到合适的

驱动程序      

JDBC:SQLAnywhere中:UID = DBA; PWD = SQL; ENG = iqtry;数据库= ATEST;链接= TCPIP(主机= 172

。      

16.50.137,2643)

     

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

     

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

     

在Test.main(ConnectIQ.java:30)

从我的问题来看,我尝试在当前路径中设置classpath

  

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

     

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

但一切都行不通。

1 个答案:

答案 0 :(得分:0)

dbisql实用程序是命令行实用程序,不应与Java一起使用。它可以通过像Bash这样的Shell使用,或者在GUI环境中使用。

sajdbc4.jar文件是SAP IQ的JDBC驱动程序。正如您已经提到的那样,它位于CLASSPATH中,最好使用其IQDataSource类来实现JDBC标准中的DataSource Interface

一个简单的代码是:

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

另一个提示:请记住,SAP IQ的每个版本都与特定版本的JDBC驱动程序相关联。验证您是否在正确的平台上使用正确的版本目标。

希望这有帮助。