我是Android开发的新手,我的数据库存在问题 如果有人可以帮助我,我将不胜感激!
这是我收到的错误:
12-05 19:36:49.029 9919-9919/uk.ac.acnh572city.movieapp E/SQLiteLog: (1) no such column: jsonResults
我的代码:
package uk.ac.acnh572city.movieapp;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Created by Amir on 29/11/2015.
*/
public class ResultsDatabase extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "movieinfo.db";
public String TABLE_TITLE = "results_dat" +
"abase";
public static final String COLUMN_JSON = "jsonResults";
public static final String COLUMN_ID = "keyword";
public ResultsDatabase(Context context) {
super(context, DATABASE_NAME, null, 6);
}
@Override
public void onCreate(SQLiteDatabase db) {
final String TABLE_CREATE =
"CREATE TABLE " +TABLE_TITLE+ " ("+ COLUMN_ID + " TEXT " + COLUMN_JSON + " TEXT )";
db.execSQL(TABLE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP_TABLE " +TABLE_TITLE+ " IF EXISTS");
}
public void addResult(String keyword, String jsonResults) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(COLUMN_ID, keyword);
cv.put(COLUMN_JSON, jsonResults);
db.insert(TABLE_TITLE, null, cv);
db.close();
}
public String displayResults(String keyword) {
SQLiteDatabase db = this.getReadableDatabase();
String query = "SELECT "+COLUMN_JSON+" FROM "+TABLE_TITLE+" WHERE "+COLUMN_ID+" = '"+keyword+"'";
Cursor cursor = db.rawQuery(query, null);
String result = null;
while (cursor.moveToNext()) {
result = cursor.getString(0);
}
cursor.close();
db.close();
return result;
}
}
答案 0 :(得分:0)
你忘记了一个逗号:
final String TABLE_CREATE =
"CREATE TABLE " +TABLE_TITLE+ " ("+ COLUMN_ID + " TEXT " + COLUMN_JSON + " TEXT )";
应该是
final String TABLE_CREATE =
"CREATE TABLE " +TABLE_TITLE+ " ("+ COLUMN_ID + " TEXT, " + COLUMN_JSON + " TEXT )";
<强> [编辑] 强>
我发现了另一个问题(单个陈述中有2个问题):
db.execSQL("DROP_TABLE " +TABLE_TITLE+ " IF EXISTS");
必须是
db.execSQL("DROP TABLE IF EXISTS " +TABLE_TITLE);
您在关键字DROP和TABLE之间添加了一个额外的下划线,并在IF EXISTS子句之前错放了表名。