【发布时间】:2014-11-10 03:51:28
【问题描述】:
请帮忙!
public class DB {
private static final String DB_NAME = "mydb";
private static final int DB_VERSION = 1;
private static final String DB_TABLE = "mytab";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_IMG = "img";
public static final String COLUMN_TXT = "txt";
private static final String DB_CREATE =
"create table " + DB_TABLE + "(" +
COLUMN_ID + " integer primary key autoincrement, " +
COLUMN_IMG + " integer, " +
COLUMN_TXT + " text" +
");";
private final Context mCtx;
private DBHelper mDBHelper;
private SQLiteDatabase mDB;
public DB(Context ctx) {
mCtx = ctx;
}
// открыть подключение
public void open() {
mDBHelper = new DBHelper(mCtx, DB_NAME, null, DB_VERSION);
mDB = mDBHelper.getWritableDatabase();
}
// закрыть подключение
public void close() {
if (mDBHelper!=null) mDBHelper.close();
}
// получить все данные из таблицы DB_TABLE
public Cursor getAllData() {
return mDB.query(DB_TABLE, null, null, null, null, null, null);
}
// добавить запись в DB_TABLE
public void addRec(String txt, int img) {
ContentValues cv = new ContentValues();
cv.put(COLUMN_TXT, txt);
cv.put(COLUMN_IMG, img);
mDB.insert(DB_TABLE, null, cv);
}
// класс по созданию и управлению БД
private class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
}
// создаем и заполняем БД
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DB_CREATE);
ContentValues cv = new ContentValues();
for (int i = 1; i < 5; i++) {
cv.put(COLUMN_TXT, "sometext " + i);
cv.put(COLUMN_IMG, R.drawable.ic_launcher);
db.insert(DB_TABLE, null, cv);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
}
所以如果我在初始化时重命名字段 DB_NAME 或 DB_TABLE 就会出现错误。如果我不碰名字 - 一切都好,但我需要改变它们。试图改变模拟器 - 没有帮助。
【问题讨论】:
-
如果您更改字段,您还必须更改版本
-
然后发布您的 logcat .....
-
卸载前一个并安装
-
在 Java 代码中创建模式对我来说似乎很愚蠢。通过执行 SQL 命令创建架构,并在应用启动时准备好。
-
09-16 11:57:28.531: W/dalvikvm(447): threadid=1: 线程以未捕获的异常退出 (group=0x40015560) 09-16 11:57:28.591: E/AndroidRuntime (447): 致命异常: main 09-16 11:57:28.591: E/AndroidRuntime(447): java.lang.RuntimeException: 无法启动活动 ComponentInfo{ru.patufedor.scbi/ru.patufedor.scbi.User} :android.database.sqlite.SQLiteException:没有这样的表:教师:,编译时:SELECT * FROM Teachers
标签: java android sqlite adapter rename