Android SQL 不幸的是应用程序已停止
Android SQL app unfortunately app has stopped
我已经按照以下教程 (https://www.youtube.com/watch?v=p8TaTgr4uKM) 创建了一个 SQL 数据库应用程序,不幸的是我遇到了应用程序无法打开的问题,任何人都可以帮忙看看我是否做错事了。
这是SQL代码
package com.example.sqltest2;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "products.db";
public static final String TABLE_NAME = "productstable.db";
public static final String COL_1 = "ID";
public static final String COL_2 = "NAME";
public static final String COL_3 = "Aisle";
public static final String COL_4 = "LOC";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME,null, 1);
SQLiteDatabase db = this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table" + TABLE_NAME +" (ID INTEGER PRIMAY KEY AUTOINCREMENT, NAME TEXT, Aisle INTEGER, LOC INTEGER)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
onCreate(db);
}
}
Logcat 指向
上的语法错误
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table" + TABLE_NAME +" (ID INTEGER PRIMAY KEY AUTOINCREMENT, NAME TEXT, Aisle INTEGER, LOC INTEGER)");
}
编辑:主要问题可能是@Marc B 指出的,PRIMAY
应该是 PRIMARY
。
我也注意到了这一点:
你的TABLE_NAME
里面有.db
。
改变这个:
public static final String TABLE_NAME = "productstable.db";
为此:
public static final String TABLE_NAME = "productstable";
除了 Marc 和 Daniel 的回复;您的 CREATE
语句需要 space.
"create table" + TABLE_NAME +"
会产生类似 create tableproductstable
的结果。在 table
之后放置一个 space 以获得 "create table " + TABLE_NAME + ...
我已经按照以下教程 (https://www.youtube.com/watch?v=p8TaTgr4uKM) 创建了一个 SQL 数据库应用程序,不幸的是我遇到了应用程序无法打开的问题,任何人都可以帮忙看看我是否做错事了。
这是SQL代码
package com.example.sqltest2;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "products.db";
public static final String TABLE_NAME = "productstable.db";
public static final String COL_1 = "ID";
public static final String COL_2 = "NAME";
public static final String COL_3 = "Aisle";
public static final String COL_4 = "LOC";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME,null, 1);
SQLiteDatabase db = this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table" + TABLE_NAME +" (ID INTEGER PRIMAY KEY AUTOINCREMENT, NAME TEXT, Aisle INTEGER, LOC INTEGER)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
onCreate(db);
}
}
Logcat 指向
上的语法错误public void onCreate(SQLiteDatabase db) {
db.execSQL("create table" + TABLE_NAME +" (ID INTEGER PRIMAY KEY AUTOINCREMENT, NAME TEXT, Aisle INTEGER, LOC INTEGER)");
}
编辑:主要问题可能是@Marc B 指出的,PRIMAY
应该是 PRIMARY
。
我也注意到了这一点:
你的TABLE_NAME
里面有.db
。
改变这个:
public static final String TABLE_NAME = "productstable.db";
为此:
public static final String TABLE_NAME = "productstable";
除了 Marc 和 Daniel 的回复;您的 CREATE
语句需要 space.
"create table" + TABLE_NAME +"
会产生类似 create tableproductstable
的结果。在 table
之后放置一个 space 以获得 "create table " + TABLE_NAME + ...