适用于Android的SQLDroid JDBC驱动程序

时间:2011-10-27 14:03:21

标签: android database jdbc sqlitejdbc

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

我下载了jar并遵循主要教程,但是当我想与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();
        }


    }

2 个答案:

答案 0 :(得分:2)

您是否声明:

Class.forName("SQLite.JDBCDriver");

在声明连接之前?

修改

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

但是由于你使用的是带有自己驱动程序的SQLDroid库,你必须先用smth注册驱动程序。像:

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

答案 1 :(得分:1)

使用sqldroid-1.0.0RC1.jar我正在使用

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

有时驱动程序可以通过drivermanager加载,有时会失败。

作为一个工作,我直接使用SQLDroidDriver,这一直都有用。

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