2011-10-27 61 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()); 
相關問題