2012-09-07 30 views
0

我使用此代碼來檢查數據庫是否已經存在:安卓:在開放數據庫文件錯誤

public static boolean checkDataBase(String DB_FULL_PATH) { 
    SQLiteDatabase checkDB = null; 
    try { 
     checkDB = SQLiteDatabase.openDatabase(DB_FULL_PATH, null, 
       SQLiteDatabase.OPEN_READONLY); 
     checkDB.close(); 
    } catch (SQLiteException e) { 
     // database doesn't exist yet. 
    } 
    return checkDB != null ? true : false; 
} 

我的輔助類:

public class DatabaseHandler extends SQLiteOpenHelper { 

    private static final int DATABASE_VERSION = 1; 
    public static final String DATABASE_NAME = "my_db"; 
    private static final String TABLE_NAME = "products"; 
    private static final String KEY_NAME = "pname"; 

    public DatabaseHandler(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 

     String CREATE_PRODUCTS_TABLE = "CREATE TABLE " + TABLE_NAME + "(" 
       + KEY_NAME + " TEXT" + ")"; 
     db.execSQL(CREATE_PRODUCTS_TABLE); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 
     onCreate(db); 
    } 

    public void addProducts(String product_name) { 

     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues values = new ContentValues(); 
     values.put(KEY_NAME, product_name); // Product Name 
     db.insert(TABLE_NAME, null, values); 
     db.close(); 
    } 

    public String getProducts() { 

     SQLiteDatabase db = this.getReadableDatabase(); 
     String selectQuery = "SELECT * FROM " + TABLE_NAME; 
     Cursor cursor = db.rawQuery(selectQuery, null); 
     String s = "default"; 
     if (cursor.moveToFirst()) { 
      int n = cursor.getCount(); 
      s = cursor.getString(0); 
     } 
     cursor.close(); 
     return s; 
    } 
} 

當我試圖這樣的:

checkDataBase(Environment.getDataDirectory() + "/data/com.android.my_app/databases/my_db.db") 

我在log cat中得到這個錯誤信息:

sqlite returned: error code = 14, msg = cannot open file at source line 25467

sqlite3_open_v2("/data/data/com.android.my_app/databases/my_db.db"‌​, &handle, 1, NULL) failed 
+0

你把你的數據庫資源文件夾? –

+0

看到這個? http://stackoverflow.com/questions/7316191/android-sqlite-returned-error-code-14 – siliconeagle

+0

@HardikNadiyapara沒有它的默認文件夾。我的意思是我沒有使用任何東西,除了默認的數據庫創建代碼 –

回答

0

使用此檢查數據庫

 private boolean checkDataBase() { 
    // TODO Auto-generated method stub 
     File dbFile = new File(DB_PATH + DB_NAME); 
     return dbFile.exists(); 
    } 
    where path 
    private static String DB_PATH = "/data/dat/your_package_name/databases/"; 
    and DB_NAME is database name 
+0

它仍然給我錯誤,當我第二次打開應用程序。我的意思是當我第一次啓動應用程序時數據庫已經創建 –