Android 上的 SQLite JDBC 驱动程序

tas*_*r86 5 sqlite android jdbc

我正在尝试使用xerial sqlite-jdbc在 Android 中管理我的数据库但没有成功。我遇到了一个java.lang.NoClassDefFoundError: org.sqlite.SQLiteConnection异常'org.xerial:sqlite-jdbc:3.18.0'。我已经在我的 gradle 中导入了这个依赖项。我的代码如下,

 try {

        Class.forName("org.sqlite.JDBC");
        Connection connection = DriverManager.getConnection("jdbc:sqlite:hs.db");

    } catch (ClassNotFoundException eString) {System.err.println("Could not init JDBC driver - driver not found");
    } catch (java.sql.SQLException e) {e.printStackTrace();}
Run Code Online (Sandbox Code Playgroud)

android.database.sqlite在我的项目是不是选项,所以请不要认为作为一个答案。

dhe*_*iat 4

摇篮

 compile 'org.sqldroid:sqldroid:1.0.3'
Run Code Online (Sandbox Code Playgroud)

爪哇

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.SQLException;

public class MainActivity extends AppCompatActivity {

    private Connection connection;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        try {
            DriverManager.registerDriver((Driver) Class.forName("org.sqldroid.SQLDroidDriver").newInstance());
        } catch (Exception e) {
            throw new RuntimeException("Failed to register SQLDroidDriver");
        }
        String jdbcUrl = "jdbc:sqldroid:" + "/data/data/" + getPackageName() + "/my-database.db";
        try {
            this.connection = DriverManager.getConnection(jdbcUrl);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public void onDestroy() {
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        super.onDestroy();
    }
}
Run Code Online (Sandbox Code Playgroud)

https://github.com/SQLDroid/SQLDroid