2011-05-02 61 views
0

嗨全部 我想从SD卡存储歌曲名称到数据库。我使用下面的代码,但它不存储歌曲名称。它存储错误的内容。 我的代码是:从SD卡到Android的数据库

 final String[] proj = { MediaStore.Audio.Media._ID,MediaStore.Audio.Media.DATA,MediaStore.Audio.Media.DISPLAY_NAME,MediaStore.Audio.Media.SIZE }; 
     Log.e("media",""+proj.length); 

     SQLiteDatabase db; 
     db = openOrCreateDatabase("TestData.db", SQLiteDatabase.CREATE_IF_NECESSARY, null); 
     db.setVersion(1); 
     db.setLocale(Locale.getDefault()); 
     db.setLockingEnabled(true); 
     final String CREATE_TABLE_COUNTRIES ="CREATE TABLE IF NOT EXISTS songs (bpm INTEGER,songname TEXT);"; 
     db.execSQL(CREATE_TABLE_COUNTRIES); 
     Log.e("media","table created"); 
     ContentValues values = new ContentValues(); 
     for(int i=0;i<proj.length;i++){ 
      values.put("bpm", 0); 
      values.put("songname", proj[i]);  
      db.insert("songs", null, values); 
     } 
     Log.e("media","insered"); 
     Cursor cx = db.rawQuery("select * from songs" , null); 
     if (cx != null) { 
     if (cx.moveToFirst()) { 
      do { int bpm=cx.getInt(0); 
        String songname =cx.getString(1); 
        Log.e("songs","bpm "+bpm+" songname "+songname); 
      }while (cx.moveToNext()); 
     } 
     } 


     db.close();   


musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,proj, null, null, null); 
     Log.e("media1",""+musiccursor); 

我的日志猫输出为:

05-02 12:28:02.716: ERROR/media(957): 4 
05-02 12:28:03.156: ERROR/media(957): table created 
05-02 12:28:03.986: ERROR/media(957): insered 
05-02 12:28:03.986: ERROR/songs(957): bpm 0 songname _id 
05-02 12:28:03.986: ERROR/songs(957): bpm 0 songname _data 
05-02 12:28:03.986: ERROR/songs(957): bpm 0 songname _display_name 
05-02 12:28:03.986: ERROR/songs(957): bpm 0 songname _size 
05-02 12:28:04.026: ERROR/media1(957): [email protected] 

请帮助我。

回答

0

您应该使用'SQLiteOpenHelper'来管理您的数据库表。然后,你可以使用它的函数'getReadableDatabase()'和'getWriteableDatabase()',它返回一个'SQLiteDatabase'。这是做这件事的常见方式。

检查Googles Tutorial就可以了。