这是我的数据库类
public class ProgramDbAdapter{
public static final String KEY_ROWID = "_id";
public static final String KEY_PROGRAM_TITLE = "ProgramTitle";
public static final String KEY_PROGRAM_DATE = "ProgramDate";
public static final String KEY_PROGRAM_TIME = "ProgramTime";
public static final String KEY_PROGRAM_CHANNEL = "ProgramChannel";
private static final String DATABASE_CREATE =
"CREATE TABLE " + DATABASE_TABLE + " (" + "_id integer primary key autoincrement, "
+ "ProgramTitle text, " + "ProgramDate varchar(20), "
+ "ProgramTime varchar(20), " + "ProgramChannel text)";
private static final String DATABASE_UPGRADE = "DROP TABLE IF EXISTS " + DATABASE_TABLE;
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL(DATABASE_UPGRADE);
onCreate(db);
}
}
public ProgramDbAdapter open() throws SQLException{
mDbHelper = new DatabaseHelper(mcontext);
mDb = mDbHelper.getWritableDatabase();
return this;
}
public long CreateData(String ProgramTitle, String ProgramDate, String ProgramTime, String ProgramChannel){
ContentValues initialvalues = new ContentValues();
initialvalues.put(KEY_PROGRAM_TITLE, ProgramTitle);
initialvalues.put(KEY_PROGRAM_DATE, ProgramDate);
initialvalues.put(KEY_PROGRAM_TIME, ProgramTime);
initialvalues.put(KEY_PROGRAM_CHANNEL, ProgramChannel);
return mDb.insert(DATABASE_TABLE, null, initialvalues);
}
}
这是我的主要课程
public class Program extends ExpandableListActivity{
public void onCreate(Bundle savedInstanceState) {
mDbHelper = new ProgramDbAdapter(this);
mDbHelper.open();
mDbHelper.CreateData("a","a","a","a");
}
}
当我调用open()和createdata函数时,logcat告诉我no such table:Program
。问题在哪里?
答案 0 :(得分:3)
sqlite中没有varchar类型,请参阅here。改为使用文字。
答案 1 :(得分:0)
我没有看到'DATABASE_TABLE'的来源。
此外,您应该使用“rawQuery()”,“query()” - 方法或“SQLiteStatement”将参数绑定到您的SQL语句中。
最后但并非最不重要的是,SQLite不知道任何'varchar'。点击此处查看所有数据类型:Link
答案 2 :(得分:0)
varchar被翻译成文本... 来自vladimir链接:
如果声明了列的类型 包含任何字符串“CHAR”, 然后该列具有“CLOB”或“TEXT” TEXT亲和力。请注意该类型 VARCHAR包含字符串“CHAR”和 因此被分配了TEXT亲和力。
问题是你在第一次运行时创建了db,并且有不同的Create statment ......
从Android设置中删除应用数据或更改DATABASE_VERSION