0

すべての CREATE TABLE に失敗しました。およびエラーのある INSERT ステートメントno such a table

これは、Android 2.3 では発生しません。代わりに 3.2 を使用します。何故ですか?データベースの作成中にエラーが発生しましたか?

私のクラスの例:

public class MainActivity extends Activity {

DatabaseHelper databaseHelper = new DatabaseHelper(this);

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    String queryTest="create table TEST_TABLE(ID integer,T_MESSAGE text)";
    databaseHelper.executeQuery(queryTest);
    queryTest="INSERT INTO TEST_TABLE (ID,T_MESSAGE) VALUES (1,'1');";
    databaseHelper.executeQuery(queryTest);

}

}

私のデータベース:

public class DatabaseHelper extends SQLiteOpenHelper {

private static String DATABASE_NAME = "pro.db";
private static String DATABASE_PATH = "/data/data/it.sysman.mobile.contactpro/databases/";



private static final int SCHEMA_VERSION = 2;

public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, SCHEMA_VERSION);
}

@Override
public void onCreate(SQLiteDatabase sqlDB) {
    try {



    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}


@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

}
private SQLiteDatabase openDataBase(int flag) {

    SQLiteDatabase checkDB = null;

    try {

        Environment.getExternalStorageDirectory();
        Environment.getDataDirectory();
        Environment.getRootDirectory();
        Environment.getExternalStorageState();
        checkDB = getWritableDatabase();

    } catch (Exception e) {
        e.printStackTrace();
    }

    return checkDB;
}


public String executeQuery(String query) {

    SQLiteDatabase sqlDB = null;
    Cursor data = null;
    try {
        sqlDB = openDataBase(SQLiteDatabase.NO_LOCALIZED_COLLATORS);
        data = sqlDB.rawQuery(query, null);

        if (data.getCount() == 0)
            return null;

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (data != null)
            data.close();
        if (sqlDB != null)
            sqlDB.close();
    }
    return null;
}

}

4

1 に答える 1

-1

ここにはいくつかの注意事項があります。

1:

の外でデータベースを作成することを主張する場合SQLiteOpenHelper。使用execQuery()しないでrawQuery()ください。これで問題が解決するかどうかはわかりませんが、これは結果を返さない SQL クエリに使用する方法です。

二:

内でデータベースの作成を行い、データベースSQLiteOpenHelperの作成と更新を管理させることをお勧めします。

アプリケーションで事前にロードされたデータベースを使用する場合は、このブログ投稿を参照してください。

于 2012-09-25T10:40:52.837 に答える