-1

私はいくつかの SQLLite の基本で遊んでいて、アクティビティ クラスから非常に単純なデータベースを作成しようとしています。アプリは正常に動作しますが、エミュレーターのファイル エクスプローラーに移動すると、データベースが作成されません。ここで何が問題なのですか?

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}



class sql1 extends SQLiteOpenHelper {

    public static final String DBNAME="coordinates";
    public static final String TBNAME="show";
    private static final int Version=1;


    public sql1(Context context, String name, CursorFactory factory, int version){
        super(context, DBNAME, factory, Version);
    }

    @Override
    public void onCreate(SQLiteDatabase arg0) {

        String CREATE_TABLE ="CREATE TABLE IF NOT EXISTS Names (Time VARCHAR,Long VARCHAR, Lang VARCHAR);";             

        arg0.execSQL(CREATE_TABLE);
        Log.d("TAG","Created Database");
    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
        // TODO Auto-generated method stub

    }


}


}
4

4 に答える 4

1

あなたの主な活動では、これを行います:

SQLiteDatabase sqliteDatabase = null;

sql1 databaseHelper = 新しい sql1(_context);

sqliteDatabase = databaseHelper.getWritableDatabase();

于 2013-10-01T07:15:45.957 に答える
0

これを試して

            public class DbHelper extends SQLiteOpenHelper {

    public DbHelper() {

        super(dataContext, DB_NAME, null, 1);

        DB_PATH = "/data/data/" 
                   + dataContext.getApplicationContext().
                    getPackageName()+ 
                    "/databases/";

        boolean dbExist = checkDataBase();
        if (!dbExist) {

            this.getReadableDatabase();
            try {
                copyDataBase();

            } catch (IOException e) {
                throw new Error("Error copying database");
            }
        }

    }

    private void copyDataBase() throws IOException {
        // TODO Auto-generated method stub

        InputStream inFile = dataContext.getAssets().open(DB_NAME);
        String outFileName = DB_PATH + DB_NAME;
        OutputStream myOutput = new FileOutputStream(outFileName);
        byte[] buffer = new byte[1024];
        int length;
        while ((length = inFile.read(buffer)) > 0) {
            myOutput.write(buffer, 0, length);
        }
        // Close the streams
        myOutput.flush();
        myOutput.close();
        inFile.close();
      }

      private boolean checkDataBase() {
        // TODO Auto-generated method stub

        File dbFile = new File(DB_PATH + DB_NAME);

        return dbFile.exists();



    }

    @Override
    public void onCreate(SQLiteDatabase arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
        // TODO Auto-generated method stub

    }

    }
于 2013-10-01T06:40:04.370 に答える
0

問題は、Long のようなキーワードを使用している可能性があると思います。別の名前を割り当てます。時間についてはわかりませんが、それもキーワードになる可能性があります

于 2013-10-01T06:37:21.887 に答える