我正在编写一个简单的数据库应用程序,但是当我加载应用程序时,它说:“应用程序意外停止了”
以下是我的数据库代码:
public class EventsData extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "events.db";
private static final int DATABASE_VERSION = 1;
public EventsData(Context ctx) {
super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL("CREATE TABLE " + TABLE_NAME + "(" + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ TIME + " INTEGER, " + TITLE + " TEXT NOT NULL);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
我的常数:
import android.provider.BaseColumns;;
public interface Constants extends BaseColumns {
public static final String TABLE_NAME = "events";
//columns in the events db
public static final String TIME = "time";
public static final String TITLE = "title";
}
错误是:
04-14 17:08:12.486:E / Database(277):在准备'CREATE TABLE事件时,在0x217058上失败1(仅允许在INTEGER PRIMARY KEY上使用AUTOINCREMENT)(_IDINTEGER PRIMARY KEY AUTOINCREMENT,timeINTEGER,title TEXT NOT NULL);'。
为什么会出错?
答案 0 :(得分:0)
您的字段和类型之间没有留空格。 _idINTEGER PRIMARY KEY ....必须在_id和INTEGER之间留空。
答案 1 :(得分:0)
您应检查字段名称及其类型之间的空格。错误说:
[...]事件(_idINTEGER PRIMARY KEY AUTOINCREMENT,timeINTEGER,title TEXT NOT NULL)
但是,您的代码看起来很好。你确定这是实际的代码吗?
答案 2 :(得分:0)
我认为这个问题与SQLITE语法有关。请检查此链接。
Android table creation Failure (near "autoincrement": syntax error)?
答案 3 :(得分:0)
您需要在sqlite代码中添加空格。如果您看到错误CREATE TABLE events(_idINTEGER PRIMARY KEY AUTOINCREMENT, timeINTEGER, title TEXT NOT NULL);'
_id INTEGER应该是分开的。添加额外的空格
答案 4 :(得分:0)
尝试使用此...
String sql = db.execSQL("create table " + TABLE_NAME + "( " + BaseColumns._ID + " integer primary key autoincrement, "
+ TIME + " integer, " + TITLE + " text not null);");
db.execSQL(sql);
答案 5 :(得分:0)
只需将您的_ID重命名为_id即可。你的其余代码看起来很好。 还有一件事你将TIME声明为String并将其Type设置为Integer,请注意这一点。
答案 6 :(得分:0)
使用firefox浏览器检查您的查询。 Firefox有一个组件(或插件)来创建/编辑表,行......
答案 7 :(得分:0)
根据SQlite网站(http://sqlite.org/faq.html#q1),您不必使用自动增量将其添加到列中。我不记得我用来创建数据库的代码,如果我现在没有使用平板电脑,我会检查它。
答案 8 :(得分:0)
dude将INTEGER PRIMARY KEY AUTOINCREMENT更改为INTEGER PRIMARY KEY,它可以正常工作并自动增量