web-dev-qa-db-ja.com

Android JDBCをサポートしていますか

Androidには、内部Androidデータベースを管理するのに役立つクラスを提供するAndroid.database.sqliteパッケージがあることを知っています。

問題は、Android.database.sqliteから何も使用せずに標準のJava.sqlパッケージを使用してAndroidのデータベースを操作できますか?* SQLite JDBCドライバーを使用して接続を開こうとしましたが、プロジェクトEclipseへの参照としてライブラリを追加したとき「Javaヒープがメモリ不足です... dalvikVMに変換できませんでした」とクラッシュします。

21
Mojo Risin

Java.*クラスを実装するJARを簡単にインポートすることはできません。また、JDBCはAndroidに移植する必要があります。これは、おそらくJavaSEのクラスに依存しているためAndroid不足しています。そして、とにかく、APIをラップしてSQLite用の独自のJDBCドライバーを作成する必要があります。 Android既存のJDBCドライバーはJNIを使​​用していると思われるため、既に提供されています。すべてが完了すると、多くの肥大化を追加するアプリケーションが作成され、人々がそうする可能性が低くなります。アプリケーションをダウンロードして保持します。

要するに、私はこのルートには行きません。

17
CommonsWare

AndroidのSQLiteデータベース用の(文書化されていない?)JDBCドライバーがあります。これを試してください:(から http://groups.google.com/group/Android-developers/browse_thread/thread/cf3dea94d2f6243c

    try {
        String db = "jdbc:sqlite:" + getFilesDir() + "/test.db";

        Class.forName("SQLite.JDBCDriver");
        Connection conn = DriverManager.getConnection(db);
        Statement stat = conn.createStatement();
        stat.executeUpdate("create table primes (number int);");
        stat.executeUpdate("insert into primes values (2);");
        stat.executeUpdate("insert into primes values (3);");
        stat.executeUpdate("insert into primes values (5);");
        stat.executeUpdate("insert into primes values (7);");

        ResultSet rs = stat.executeQuery("select * from primes");
        boolean b = rs.first();
        while (b) {
            Log.d("JDBC", "Prime=" + rs.getInt(1));
            b = rs.next();
        }

        conn.close();
    } catch (Exception e) {
        Log.e("JDBC", "Error", e);
    } 
11
kristianlm

jDBCドライバーは文書化されておらず、サポートされていません。このコードは使用しないでください。

java.sqlを避け、代わりにAndroid.database.sqliteを使用してください。

5
Elliott Hughes

現在、そのようなドライバーがあります: SQLDroid

2
Alexey Romanov