Android SQLiteException没有这样的表

时间:2016-08-17 19:26:22

标签: android sqlite

朋友。

我尝试在我的Android应用中使用预先创建的自定义数据库。首先,我使用此代码复制我的数据库。

public void onCreate(SQLiteDatabase db) {



    final String DB_DESTINATION = "/data/data/com.example.android.sqlitedatabaseexample/databases/turkish2.db";


            boolean initialiseDatabase = (new File(DB_DESTINATION)).exists();
            if (initialiseDatabase == false) {


                // Open the .db file in your assets directory
                InputStream is = null;
                try {

                    is = context.getAssets().open("turkish2.db");


                // Copy the database into the destination
                OutputStream os = new FileOutputStream(DB_DESTINATION);
                byte[] buffer = new byte[1024];
                int length;
                while ((length = is.read(buffer)) > 0){
                    os.write(buffer, 0, length);
                }
                os.flush();

                os.close();
                is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

然后我检查数据库是否存在调用此方法

 public boolean checkDataBase() {
            /*Toast.makeText(getApplicationContext(),
                    "работаю", Toast.LENGTH_SHORT).show();*/
            SQLiteDatabase checkDB = null;
            try {
                checkDB = SQLiteDatabase.openDatabase("/data/data/com.example.android.sqlitedatabaseexapple/databases/turkish2.db", null,
                        SQLiteDatabase.NO_LOCALIZED_COLLATORS/*OPEN_READONLY*/);
                Toast.makeText(getApplicationContext(),
                        "БД на месте", Toast.LENGTH_SHORT).show();
                checkDB.close();
            } catch (SQLiteException e) {
                // database doesn't exist yet.
                Toast.makeText(getApplicationContext(),
                        "БД не существует", Toast.LENGTH_SHORT).show();
            }
            return checkDB != null;
        }

...它表明我的数据库存在!然后我尝试进行查询但获得异常。

我的数据库包含两个表 - android_metadata和turkish。但。 我用这个

检查所有表格
Cursor c = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);

                if (c.moveToFirst()) {
                    while ( !c.isAfterLast() ) {
                        Toast.makeText(this, "Table Name=> "+c.getString(0), Toast.LENGTH_LONG).show();
                        c.moveToNext();
                    }
                    Toast.makeText(this, "DATS ALL SUKA", Toast.LENGTH_LONG).show();
                }

它showl就像我只有android_metadata表。另外,当我尝试查询我需要的表(土耳其语表)时,它显示SQLiteException:没有这样的表' turkish'

我做错了什么?请帮助。

提前致谢!

0 个答案:

没有答案