2012-04-10 86 views
0

我需要在Android項目中存儲一些與類期間有關的數據。看完我的選擇後,我認爲SQL數據庫將是一個不錯的選擇。不幸的是,我似乎無法得到我的聲明實際打開數據庫。我打開數據庫語句字符串是這樣的:SQL打開表格混淆

"create table "+ DATABASE_PERIOD+" (_id integer primary key autoincrement," 
+KEY_CLASSTITLE+" text not null, "+KEY_PERIOD+" text not null, 
"+KEY_XPERIODS+" text not null, "+KEY_DOUBLEPERIODS+" text not null); 

我基於它關閉了Android網站上的記事本項目。我只是添加了幾個字段,但無法打開數據庫。如果你們想要錯誤信息或其他類型的信息,我會盡力爲你解決(這是我第一次使用SQL,所以我不知道需要什麼來解決這個問題)。提前致謝!

我得到該錯誤消息是這樣的:

android.database.sqlite.SQLiteException: no such table: periodData: , while 
compiling: SELECT DISTINCT _id, title, period, xPeriods, doublePeriods FROM 
periodData WHERE _id = -1 

而且因爲它說,我使用SQLite。

我的代碼把一些數據插入表在我的數據庫的Helper類:(!感謝巴拉克漁獲)

ContentValues initialValues = new ContentValues(); 
initialValues.put(KEY_CLASSTITLE, title); 
initialValues.put(KEY_PERIOD, period); 
initialValues.put(KEY_XPERIODS, xPeriods); 
initialValues.put(KEY_DOUBLEPERIODS, doublePeriods); 

return mDb.insert(DATABASE_PERIOD, null, initialValues); 

我開始使用私有靜態字符串,以確保我的電話是不是不正確

+0

該語句不打開數據庫(-connection),它在數據庫中創建一個表。添加更多的代碼和完整的Stack-Trace到你的問題。 – 2012-04-10 22:59:04

+0

請提供您收到的錯誤消息。還要提供你正在使用的數據庫實現(SQLite,MySQL,PostGres,SQL Server等) – 2012-04-10 23:10:13

回答

1

您的問題是表名(如錯誤消息所示)。從您顯示的代碼中創建一個名爲「period」的表。但是,您嘗試使用表名「periodData」來查詢它。

兩種方式來解決這個問題:

1)更改數據庫中的表名periodData(更困難,因爲它涉及到重新創建DB)。

2)將查詢中的表名從「periodData」更改爲「period」。

+0

好的趕上!但它仍然得到相同的錯誤信息。我編輯了這個問題來展示我如何輸入數據,我猜測它可能會有一些錯誤。謝謝! – 2012-04-12 21:14:13

+0

我會猜測你改變了表名並忘記增加數據庫版本變量,所以數據庫沒有被你的新表名刪除/重新創建。如果是這種情況,只需增加該變量,運行該應用程序,它應該是固定的。 – Barak 2012-04-12 21:25:01

+0

就是這樣!現在一切都很好。感謝您指導我完成整件事。 – 2012-04-13 21:33:44

1

檢查出http://developer.android.com/guide/topics/data/data-storage.html#db

dev的主題中,您將創建一個DbHelper類來幫助你打開數據庫,你的代碼看起來是這樣的:

SQLiteDatabase db = dbHelper.getReadableDatabase(); 
Cursor c = qb.query(db, projection, selection, selectionArgs, null, null, sortOrder); 

希望這對我有幫助。

+0

根據你添加的例外信息,@Barak的帖子似乎成了頭條。 – 2012-04-11 05:23:56