SQL打开表格混淆

问题描述:

我需要在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

您的问题是表名(如错误消息所示)。从您显示的代码中创建一个名为“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

检查出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