2011-10-27 34 views
1

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

我下载的罐子和遵循的主要教程,但我不断收到SQL异常java.sql.SQLException: No suitable driver 当我想要与DriverManager建立连接。

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(); 
     } 


    } 
+0

为什么你不能在SQLite支持中使用构建? –

+0

因为谷歌告诉你不要这样做,因为它可用但它不起作用。在提供的链接中,您可以阅读它。 –

+0

我的意思是在SQLite类中构建,它使您能够使用SQLite数据库。请参阅[this](http://developer.android.com/guide/topics/data/data-storage.html#db)。 –

回答

2

你声明:

Class.forName("SQLite.JDBCDriver"); 

声明连接之前?

编辑:

对不起,我以为,要使用原生的Android JDBC驱动程序。在这种情况下,这应该是我的方法。

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

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

谢谢,这有帮助,但现在我得到java.lang.ClassNotFoundException:SQLite.JDBCDriver –

+0

你可以发布请完整的代码如何建立连接? – Dyonisos

+0

已加入问题 –

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()); 
相关问题