我的设备无法识别我的模拟器所在的数据库

时间:2010-07-10 18:55:46

标签: android

当我尝试在femulator中使用我的db进行查询时,它可以正常工作,但是在设备(里程碑)中使用相同的应用和相同的变量,似乎无法识别数据库。

我认为解决问题的关键是要了解我们存储db的设备的位置。 在模拟器上它位于/data/data/com.countryCityGame/databases/test1.db

但是当我使用设备时,它必须在另一个地方,有人知道在哪里吗?

这是我构建数据库的java代码:

public static void main(String[] args) throws Exception {

    String CITIES[] = city.split(",");
    String ANIMEL[] = animel.split(",");
    String CELEB[] = UK_CELEB.split(","); 
    String Nature[] = vegtablesAndFruiets.split(","); 
    String V[][] = {COUNTRIES,CITIES,ANIMEL,Nature,occupations,CELEB}; 
    String []TypeNames = {"Country","City","Animels","Nature","Occupation","Celeb"};

    Class.forName("org.sqlite.JDBC");
    Connection conn = DriverManager.getConnection("jdbc:sqlite:test1.db");

    Statement stat = conn.createStatement();
    //stat.executeUpdate("drop table if exists "+"android_metadata"+";");
    stat.executeUpdate("create table android_metadata (\"locale\" TEXT DEFAULT 'en_US');");
    //PreparedStatement prep1 = conn.prepareStatement(
           //   "insert into "+"android_metadata"+" values (?);");

    //prep1.setString(1, "en_US") ;
    //prep1.addBatch(); 

    stat.executeUpdate("drop table if exists "+TABLE_NAME+";");
    //stat.executeUpdate("create table "+TABLE_NAME+" (name, occupation);");
    stat.executeUpdate("create table "+TABLE_NAME+" ("+VALUE+" TEXT NOT NULL,"+TYPE+" TEXT NOT NULL,"+LETTER+" TEXT NOT NULL,"+counter+" INTEGER);");
    PreparedStatement prep = conn.prepareStatement(
      "insert into "+TABLE_NAME+" values (?,?,?,?);");

    //private void insertToTalble();
    int j=0,i=0;
    try{
        for(j = 0 ;j < V.length; j++)
            for (i = 0 ;i < V[j].length ; i++)
            {
            if  (V[j][i] != null)
            {
                V[j][i] = asUpperCaseFirstChar(V[j][i]);
                Character c = V[j][i].charAt(0);
                prep.setString(3, c.toString());
            }

            prep.setString(1, V[j][i]);
            prep.setString(2, TypeNames[j]);
            prep.setInt(4,0);

            prep.addBatch();
            }
    }catch(Exception e) {
    System.out.println("***********"+i+"***************");          
    }

    conn.setAutoCommit(false);
    prep.executeBatch();
   // prep1.executeBatch();
    conn.setAutoCommit(true);
    ResultSet rs = stat.executeQuery("select * from "+TABLE_NAME+";");

    while (rs.next()) {
      System.out.println("country name = " + rs.getString(VALUE));
      System.out.println("type = " + rs.getString(TYPE));
      System.out.println("letter = " + rs.getString(LETTER));
      System.out.println("********************************");
    }
    rs.close();
    conn.close();
  }

,这是我第一次收到错误的代码:

private static final String DB_PATH = "/data/data/com.countryCityGame/databases/test1.db";
    private static final String DATABASE_NAME = "test1.db";
    private static final int DATABASE_VERSION = 1;
    private static final String TABLE_NAME = "GameTable";
    private static final String VALUE = "value";
    private static final String TYPE = "type";
    private static final String LETTER = "letter";


    public countryCityGameLogic(EditText[] myEditTextArr , Context context) {

        points = 0;//init values
        Cursor cursor = null ;
        this.context = context;
        openHelper = new OpenHelper(context);
        gameList = new CharSequence [myEditTextArr.length];
        for (int i = 0 ; i < myEditTextArr.length; i++){
            gameList[i] = myEditTextArr[i].getText();
        }
        //this.db = openHelper.getWritableDatabase();

        try{
            db = SQLiteDatabase.openDatabase(DB_PATH , null,  SQLiteDatabase.NO_LOCALIZED_COLLATORS/*SQLiteDatabase.CREATE_IF_NECESSARY*/);
            //this question 
            cursor = db.query(TABLE_NAME, new String[] {LETTER}
            ,LETTER+ " like " + "'%" + "A" +"%'", null, null, null, null);  
            if ( !cursor.moveToFirst()){
                //*****if data base doesnot exist HERE I GOT PROBLEMES****
                this.db = openHelper.getWritableDatabase();//make new data base

                }
        }catch(SQLiteException e){

            this.db = openHelper.getWritableDatabase();//make new data base
        //  for (int i = 0 ; i < ALLVALUES.length ; i++) 
        //          insertValus(ALLVALUES[i],i);


        }

注意:在我使用/data/data/com.countryCityGame/databases/test1.db的设备中,它可能不是应用程序位于我正在使用的设备上的路径。

0 个答案:

没有答案