我想创建一个名为tasksTable
的表,它有两列 - taskName
及其自动增量taskID
。
这是我用它创建数据库并实现操作上述表的操作的类 -
public class DatabaseOperations extends SQLiteOpenHelper {
public static final int database_version = 1;
***public String CREATE_QUERY = "CREATE TABLE tasksTable(taskName TEXT, taskID INTEGER primary key AUTO_INCREMENT NOT NULL);"
public DatabaseOperations(Context context) {
super(context, TableData.TableInfo.DATABASE_NAME, null, database_version);
Log.d("Database operations", "Database created successfully");
}
@Override
public void onCreate(SQLiteDatabase sdb) {
sdb.execSQL(CREATE_QUERY);
Log.d("Database operations", "Table created successfully");
}
public void putInformation(DatabaseOperations dop, String taskName){
SQLiteDatabase SQ = dop.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(TableData.TableInfo.TASK_NAME, taskName);
SQ.insert(TableData.TableInfo.TABLE_NAME, null, cv);
Log.d("Database operations", "One row inserted");
}
public Cursor getInformation(DatabaseOperations dop) {
SQLiteDatabase SQ = dop.getReadableDatabase();
String[] columns = {TableData.TableInfo.TASK_NAME, TableData.TableInfo.TASK_ID};
return SQ.query(TableData.TableInfo.TABLE_NAME, columns, null, null, null, null, null);
}
}
但问题是,只要我打开应用程序,我就会收到以下错误 -
java.lang.RuntimeException:无法启动活动ComponentInfo {com.android.hw_3 / com.android.hw_3.MainActivity}:android.database.sqlite.SQLiteException:no such column:taskID(code 1):, while编译:SELECT taskName,taskID FROM tasksTable
也许它必须是我实施putInformation
的方式?鉴于存在这个“隐含”列taskID
,我不确定这是否会添加新错误。
答案 0 :(得分:0)
将此查询用于create table: -
public String CREATE_QUERY = "CREATE TABLE tasksTable(taskName TEXT, taskID int NOT NULL AUTO_INCREMENT, UNIQUE KEY `taskID` (`taskID`));"
答案 1 :(得分:0)
您应该将类型从INT重命名为INTEGER
以下是Sqlite
中支持的类型将您的代码更改为:
public String CREATE_QUERY = "CREATE TABLE tasksTable(taskName TEXT, taskID INTEGER primary key AUTOINCREMENT NOT NULL);"
答案 2 :(得分:0)
android.database.sqlite.SQLiteException:没有这样的列:
taskID
(代码 1):,在编译时:SELECT
taskName
,taskID
FROMtasksTable
您tasksTable
未正确创建。
更新CREATE_QUERY
,如下所示:
public String CREATE_QUERY = "CREATE TABLE tasksTable(taskName TEXT, taskID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL);"
希望这会起作用〜