最近在尝试学习android应用中对数据库的操作。
我写了一个工程,在通过继承一个SQLiteOpenHelper中重载了一下函数private static final String DATABASE_CREATE = 
"CREATE TABLE notes1("
+ "_id integer primary key,"
+"note text,"
+"created integer,"
+"modified integer"
+");";
@Override
public void onCreate(SQLiteDatabase arg0) {
// TODO Auto-generated method stub
arg0.execSQL(DATABASE_CREATE);
}但是我发现这个数据库无法通过asb shell来查看到。而且在我再次打开数据库时,我之前往数据库中写入的全部内容全部没有了。给我的感觉就像上次创建的数据库没有了。重新创建了一个。我不知道这是什么原因。
希望有大牛能给我解答一下。谢谢

解决方案 »

  1.   

    网上资料一大把,问google大神吧
      

  2.   


    启动模拟器
    电脑运行cmd进入android-sdk-windows下platfom-tools目录
    adb  shell
    cd data
    cd data
    cd 工程包名
    cd databases
    里面就有你创建的数据库
      

  3.   


    我这么做过了。但是数据库里面没有我创建的表。比如调用.schema没有东西显示出来。然后我的工程可以给这个表添加项。然后显示出来。但是下次我启动应用后我显示出来的内容还是空的。不知道是为什么。
      

  4.   

    以下是我数据库接口类package com.demo.android.dummynote;import java.sql.Date;import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.SQLException;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;public class NotesDbAdapter{
    private static final String DATABASE_NAME = "notes.db";
    private static final int DATABASE_VERSION = 1;

    private static final String DATABASE_TABLE = "notes1";

    private static final String DATABASE_CREATE = 
    "CREATE TABLE notes1("
    + "_id integer primary key,"
    +"note text,"
    +"created integer,"
    +"modified integer"
    +");";

    private static class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(Context context, String name,
    CursorFactory factory, int version) {
    super(context, name, factory, version);
    // TODO Auto-generated constructor stub
    } @Override
    public void onCreate(SQLiteDatabase arg0) {
    // TODO Auto-generated method stub
    arg0.execSQL(DATABASE_CREATE);
    } @Override
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
    // TODO Auto-generated method stub
    arg0.execSQL("drop table if exists" + DATABASE_TABLE);
    onCreate(arg0);
    }
    }

    private Context mCtx = null;
    private DatabaseHelper dbHelper;
    private SQLiteDatabase db;
    public NotesDbAdapter(Context ctx) {
    this.mCtx = ctx;
    }

    public NotesDbAdapter open() throws SQLException {
    dbHelper = new DatabaseHelper(mCtx, null, null, 1);
    db = dbHelper.getWritableDatabase();
    return this;
    }

    public void close() {
    dbHelper.close();
    }

    public static final String KEY_ROWID = "_id";
    public static final String KEY_NOTE = "note";
    public static final String KEY_CREATED = "created";

    String[] strCols = new String[] {
    KEY_ROWID,
    KEY_NOTE,
    KEY_CREATED
    };

    public Cursor getall() {
    //return db.rawQuery("select * from notes1", null);
    return db.query(
    DATABASE_TABLE,
    strCols,
    null,
    null,
    null,
    null,
    null
    );
    }

    public long create(String Note) {
    Date now = new Date(0);
    ContentValues args = new ContentValues();
    args.put(KEY_NOTE, Note);
    args.put(KEY_CREATED, now.getTime());

    return db.insert(DATABASE_TABLE, null, args);
    }

    public boolean delete(long rowId) {
    return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
    }

    //query single entry
    public Cursor get(long rowId) throws SQLException {
    Cursor mCursor = db.query(
    true,
    DATABASE_TABLE,
    new String[] {KEY_ROWID, KEY_NOTE, KEY_CREATED},
    KEY_ROWID + "+" + rowId,
    null, null, null, null, null);
    if(mCursor != null) {
    mCursor.moveToFirst();
    }
    return mCursor;
    }

    //update
    public boolean updata(Long rowId, String note ) {
    ContentValues args = new ContentValues();
    args.put(KEY_NOTE, note);

    return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
    }
    }
      

  5.   

    一下是我的主activitypackage com.demo.android.dummynote;import android.app.Activity;
    import android.app.ListActivity;
    import android.content.Intent;
    import android.database.Cursor;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.ArrayAdapter;
    import android.widget.ListAdapter;
    import android.widget.ListView;
    import android.widget.SimpleCursorAdapter;public class DummyNoteActivity extends ListActivity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //setContentView(R.layout.main);
            setAdapter();
        }
        private String[] note_array = {
         "gasolin",
         "crota",
         "louk",
         "magicion"
        };
        
        private NotesDbAdapter mDbHelper;
        private Cursor mNotesCursor;
        
        private void setAdapter(){
         mDbHelper = new NotesDbAdapter(this);
         mDbHelper.open();
         ListAdapter adapter = new ArrayAdapter<String>(
         this,
         android.R.layout.simple_list_item_1,
         note_array
         );
         setListAdapter(adapter);
         fillData();
        }
        
        private void fillData() {
         mNotesCursor = mDbHelper.getall();
         startManagingCursor(mNotesCursor);
        
         String[] from = new String[]{"note"};
         int[] to = new int[] {android.R.id.text1};
        
         SimpleCursorAdapter adapter = new SimpleCursorAdapter
         (this, android.R.layout.simple_list_item_1, mNotesCursor, from, to);
         setListAdapter(adapter);
        }
        
        private int mNoteNumber = 1;
        protected static final int MENU_INSERT = Menu.FIRST;
        protected static final int MENU_DELETE = Menu.FIRST + 1; @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub
    super.onCreateOptionsMenu(menu);
    menu.add(0, MENU_INSERT, 0, "新增记事");
    menu.add(0, MENU_DELETE, 0, "删除记事");
    return super.onCreateOptionsMenu(menu);
    } @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    switch(item.getItemId()) {
    case MENU_INSERT:
    String noteName = "Note " + mNoteNumber++;
    mDbHelper.create(noteName);
    fillData();
    return true;
    case MENU_DELETE:
    mDbHelper.delete(getListView().getSelectedItemId());
    fillData();
    return true;
    }
    return super.onOptionsItemSelected(item);
    }
        
    private static final int ACTIVITY_EDIT = 0x1001; @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    Intent intent = new Intent(this, NoteEdit.class);
    intent.putExtra(NotesDbAdapter.KEY_ROWID, id);
    startActivityForResult(intent, ACTIVITY_EDIT);
    } @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    fillData();
    }


        
    }
      

  6.   

    # sqlite3 DbNname
    sqlite> .databases执行看看, 你数据库是main  还是temp