首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java连接到17

Java连接到17
EN

Stack Overflow用户
提问于 2016-02-28 20:57:36
回答 2查看 3.1K关注 0票数 0

我正在做一个学校项目,我必须连接到一个用17完成的数据库,我不断地得到一个流动的错误:

没有找到适合jdbc:sqlanywhere:Tds:localhost:2638?eng="DBNAME".的驱动程序

欢迎任何帮助。

下面是执行连接的类的代码。

代码语言:javascript
复制
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);
        }
    }

}
EN

回答 2

Stack Overflow用户

发布于 2016-02-28 21:08:39

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

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

代码语言:javascript
复制
javac -classpath ./sajdbc4.jar DbConnection.java

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

代码语言:javascript
复制
java -classpath "./sajdbc4.jar;." DbConnection

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

票数 1
EN

Stack Overflow用户

发布于 2020-10-07 10:34:32

使用"jdbc:sqlanywhere:DSN=SQL Anywhere 17 Demo;Password=sql" http://dcx.sap.com/sqla170/en/html/3bd5b17c6c5f1014945fd2b7ec7cba6a.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35688172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档