【问题标题】:Run dbisql in Java Program在 Java 程序中运行 dbisql
【发布时间】:2016-09-13 07:11:09
【问题描述】:

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

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

而且我已经通过 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;database=atest;links=tcpip(host=172.

16.50.137,2643)

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

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

在 Test.main(ConnectIQ.java:30)

根据我的问题,我尝试在当前路径中设置类路径

设置类路径 = ./sybase/IQ-16_0/java/sajdbc4.jar

设置类路径 = ./sybase/IQ-16_0/java/jconn4.jar

但一切都行不通。

【问题讨论】:

  • 您的类路径中没有正确的驱动程序,或者 URL 错误。另请注意,根据应用程序的运行方式,可能根本不使用环境变量CLASSPATH(实际上是大多数Java 应用程序运行方式的情况)。顺便说一句,请注意显示的代码和异常不匹配(因为异常显示的 dburl 值与代码中显示的值不同)。

标签: java jdbc classpath sap-iq


【解决方案1】:

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 驱动程序版本相关联。验证您为正确的平台使用正确的版本目标。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-19
    • 2019-05-30
    相关资源
    最近更新 更多