0

我需要在一个 Android 项目中存储一些与课时相关的数据。在查看了我的选项后,我认为 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。

我将一些数据放入数据库助手类的表中的代码:

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

我开始使用私有静态字符串来确保我的调用不正确(感谢 Barak 的发现!)

4

2 回答 2

1

查看http://developer.android.com/guide/topics/data/data-storage.html#db上的开发主题

您将创建一个 DbHelper 类来帮助您打开数据库,您的代码将类似于:

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

希望这会有所帮助。

于 2012-04-10T23:18:28.643 回答
1

您的问题是表名(如错误消息所示)。从您展示的代码中,您创建了一个名为“句点”的表。然而,您尝试使用表名“periodData”来查询它。

修复它的两种方法:

1)将数据库中的表名更改为 periodData(更难,因为它涉及重新创建数据库)。

2) 将查询中的表名从“periodData”更改为“period”。

于 2012-04-11T04:12:21.510 回答