0
我剛學習android和CRUD動作到SQLitedatabase中。它工作得很好。android數據庫被鎖定
我正確地重命名數據庫和表,然後我得到錯誤;
前:
public static String DBName = "Example";
public static String tableName = "Resource";
後:
public static String DBName = "FAEXPED";
public static String tableName = "Client";
我的課:
public class DBHelper extends SQLiteOpenHelper {
public SQLiteDatabase DB;
public String DBPath;
public static String DBName = "FAEXPED";
public static final int version = '1';
public static Context currentContext;
public static String tableName = "Client";
public static final String KEY_CodeClient = "CodeClient";
public static final String KEY_RsNom = "RaisonSocial";
public static final String KEY_Ville = "Ville";
public static final String KEY_Tel = "Tel";
private static final String TAG = "Create_The_DB";
private static final String TABLE_CREATE = "CREATE TABLE IF NOT EXISTS " +
tableName + " ("+ KEY_CodeClient + " VARCHAR PRIMARY KEY, "+ KEY_RsNom +" VARCHAR," + KEY_Ville + " VARCHAR,"+ KEY_Tel +" VARCHAR)";
public DBHelper(Context context) {
//super(context, name, factory, version);
// TODO Auto-generated constructor stub
super(context, DBName, null, version);
currentContext = context;
DBPath = "/data/data/" + context.getPackageName() + "/databases";
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
Log.w(TAG, TABLE_CREATE);
boolean dbExists = checkDbExists();
if (dbExists) {
// do nothing
} else {
DB = currentContext.openOrCreateDatabase(DBName, 0, null);
DB.execSQL(TABLE_CREATE);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CREATE);
onCreate(db);
}
private boolean checkDbExists() {
SQLiteDatabase checkDB = null;
try {
String myPath = DBPath + DBName;
checkDB = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READONLY);
} catch (SQLiteException e) {
// database does't exist yet.
}
if (checkDB != null) {
checkDB.close();
}
return checkDB != null ? true : false;
}
}
我thougt,當我重新命名它,它會爲我創建一個新的數據庫和新的桌子,是那個核心?
07-15 17:26:01.648: W/Create_The_DB(30510): CREATE TABLE IF NOT EXISTS Client (CodeClient VARCHAR PRIMARY KEY, RaisonSocial VARCHAR,Ville VARCHAR,Tel VARCHAR)
07-15 17:26:01.648: E/SQLiteLog(30510): (14) cannot open file at line 30247 of [00bb9c9ce4]
07-15 17:26:01.656: E/SQLiteLog(30510): (14) os_unix.c:30247: (2) open(/data/data/com.soft8.sql_test/databasesFAEXPED) -
07-15 17:26:01.679: E/SQLiteDatabase(30510): Failed to open database '/data/data/com.soft8.sql_test/databasesFAEXPED'.
07-15 17:26:01.679: E/SQLiteDatabase(30510): android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
07-15 17:26:01.679: E/SQLiteDatabase(30510): at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
07-15 17:26:01.679: E/SQLiteDatabase(30510): at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:279)
07-15 17:26:01.679: E/SQLiteDatabase(30510): at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:218)
07-15 17:26:01.679: E/SQLiteDatabase(30510): at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:464)
07-15 17:26:01.679: E/SQLiteDatabase(30510): at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:186)
您是否嘗試將數據庫版本更新爲2? – JDJ
您還將字符'1'存儲在'version'常量中,而不是整數1.您還應該使常量大寫。 – JDJ