gpt4 book ai didi

Java 连接到 SQL Anywhere 17

转载 作者:行者123 更新时间:2023-12-01 10:19:37 27 4
gpt4 key购买 nike

我正在开展一个学校项目,我必须连接到在 SQL Anywhere 17 中完成的数据库,但我不断收到以下错误:

No suitable driver found for jdbc:sqlanywhere:Tds:localhost:2638?eng="DBNAME".

欢迎任何帮助。

这是执行连接的类的代码。

package model;

import java.sql.*;

public class DBConnection {

public class ConnectionHandler {
ResultSet r;
Statement s;
String returnStatus;
}

private String db, user, passwd;
private String dbUrl;
private Connection conn;

public DBConnection(String db, String user, String passwd, Object openserver, String databasepath) {
this.db = db;
this.user = user;
this.passwd = passwd;

dbUrl = "jdbc:sqlanywhere:Tds:localhost:2638?eng=" + db;

try {
conn = DriverManager.getConnection(dbUrl, user, passwd);
conn.setAutoCommit(false);
} catch (Exception e) {
System.out.println(e);
Boolean openServer = (Boolean) openserver;
if (openServer.booleanValue())
try {
String engcommand = "dbeng12 " + databasepath + db + ".db";
Runtime.getRuntime().exec(engcommand);
long t0, t1;
t0 = System.currentTimeMillis();
do {
t1 = System.currentTimeMillis();
} while (t1 - t0 < 5000);
conn = DriverManager.getConnection(dbUrl, user, passwd);
conn.setAutoCommit(false);
} catch (Exception ex) {
System.out.println("Unable to start server. " + ex);
}
}
}

public void updateStatement(String sql, ConnectionHandler ch) {
Integer result = new Integer(0);
String message = null;

if (sql.trim().substring(0, 1).equalsIgnoreCase("U"))
message = "Number of rows updated: ";
else if (sql.trim().substring(0, 1).equalsIgnoreCase("I"))
message = "Number of rows inserted: ";
else
message = " ";

try {
ch.s = conn.createStatement();
result = new Integer(ch.s.executeUpdate(sql));
ch.returnStatus = message + result;
} catch (Exception e) {
System.out.println("Unable to execute the insert/update/delete statement. " + e);
ch.returnStatus = "Error:" + e.toString();
}
}

public void returnResultSetSelectStatement(String sql, int resultsetType, ConnectionHandler ch) {
ch.r = null;
try {
if (resultsetType == 1)
ch.s = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
else
ch.s = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
ch.r = ch.s.executeQuery(sql);

} catch (Exception e) {
ch.returnStatus = e.toString();
System.out.println("Unable to execute the returnSelectStatement. " + e);
}
}

}

最佳答案

您需要将sajdbc4.jar添加到程序的类路径中。如果您使用的是 NetBeans 或 Eclipse 等 IDE,则可以添加 sajdbc4.jar 作为依赖库,NetBeans/Eclipse 会自动将其添加到类路径中。

如果您从命令行运行上述程序,请将 sajdbc4.jar 复制到上述 Java 程序所在的文件夹,然后使用以下命令编译该文件(这将添加 sajdbc4.jar 到类路径),

javac -classpath ./sajdbc4.jar DbConnection.java

使用以下命令运行Java程序(sajdbc4.jar已添加到类路径中),

java -classpath "./sajdbc4.jar;." DbConnection

或者,如果您使用 Maven 构建项目,您也可以添加 Maven 依赖项。

关于Java 连接到 SQL Anywhere 17,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35688172/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com