【问题标题】:SQLDroid JDBC driver for Android适用于 Android 的 SQLDroid JDBC 驱动程序
【发布时间】:2011-12-16 13:16:13
【问题描述】:

我需要在 Android 应用程序上使用数据库,因为在使用时用户将无法访问互联网。为此,我想使用 SQL Lite 通过 JDBC 连接到数据库。经过一番研究,我发现 Android API 不支持它,但是有一个项目可以做到这一点:SQLDroid

我下载了 jars 并按照主要教程进行操作,但是当我想创建与 DriverManager 的连接时,我不断收到 sql 异常 java.sql.SQLException: No suitable driver

String url = "jdbc:sqldroid:" + "/data/data/com.mypackage.droid" + "/main.sqlite";
Connection con = DriverManager.getConnection(url);

我做错了什么? 顺便说一句,我的活动名为“AndroidActivity”,包名为 com.mypackage.droid。

编辑:完整代码:

public class AndroidActivity extends Activity {


    String url = "jdbc:sqldroid:" + "/data/data/com.mypackage.droid" + "/main.sqlite";
    static Connection con;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        try {
            Class.forName("SQLite.JDBCDriver");
            con = DriverManager.getConnection(url);
        } catch (java.sql.SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    }

【问题讨论】:

  • 为什么不能使用 SQLite-support 中的构建?
  • 因为谷歌告诉你不要这样做,因为它可用但它不起作用。在提供的链接中,您可以了解它。
  • 我的意思是构建在 SQLite 类中,使您能够使用 SQLite 数据库。见this
  • 我有一个已经在工作的数据库,它用于桌面设备。我想在 Droid 上使用同一个数据库。但是感谢您的链接

标签: android database jdbc sqlitejdbc


【解决方案1】:

你声明了吗:

Class.forName("SQLite.JDBCDriver");

在声明连接之前?

编辑:

抱歉,您想使用原生 Android JDBC 驱动程序。在这种情况下,这将是我的方法。

但是由于您使用的是自带驱动程序的 SQLDroid 库,因此您必须先注册驱动程序。喜欢:

Class.forName("org.sqldroid.SqldroidDriver").newInstance();

【讨论】:

  • 谢谢,这有帮助,但现在我得到 java.lang.ClassNotFoundException: SQLite.JDBCDriver
  • 您能否发布您如何建立连接的完整代码?
【解决方案2】:

我正在使用 sqldroid-1.0.0RC1.jar

Class.forName("org.sqldroid.SqldroidDriver");
con = DriverManager.getConnection(url);

有时驱动程序可以通过驱动程序管理器加载,有时它会失败。

作为一个工作人员,我直接使用 SQLDroidDriver,这一直有效。

con = new org.sqldroid.SQLDroidDriver().connect(url , new Properties());

【讨论】:

    猜你喜欢
    • 2011-05-11
    • 2021-08-30
    • 1970-01-01
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2012-11-20
    相关资源
    最近更新 更多