android学习之-SQLiteOpenHelper的应用
通过这个小例子大致了解了手机数据库的一些功能,见主类 packagecom.android.sucre; importandroid.app.Activity; importandroid.database.Cursor; importandroid.database.sqlite.SQLiteCursor; importandroid.os.Bundle; importandroid.util.Log; importandroid.view.Menu; importandroid.view.MenuItem; importandroid.view.View; importandroid.widget.AdapterView; importandroid.widget.EditText; importandroid.widget.ListView; importandroid.widget.SimpleCursorAdapter; /** *数据库简单应用 *@authorqiaolei * */ publicclassEX05_05_SQLiteextendsActivity{ privateToDoDBmyToDoDB; privateCursormyCursor; privateEditTextmyEditText; privateListViewmyListView; privateint_id; protectedfinalstaticintMENU_ADD=Menu.FIRST; protectedfinalstaticintMENU_EDIT=Menu.FIRST+1; protectedfinalstaticintMENU_DELETE=Menu.FIRST+2; /**Calledwhentheactivityisfirstcreated.*/ @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); myEditText=(EditText)findViewById(R.id.myEditText); myListView=(ListView)findViewById(R.id.myListView); myToDoDB=newToDoDB(this); myCursor=myToDoDB.select();//取得database中的数据 //R.layout.list为layout文件夹下的list文件 //R.id.listView指向list文件的ID SimpleCursorAdapteradapter=newSimpleCursorAdapter(this,R.layout.list,myCursor,newString[]{ToDoDB.FIELD_TEXT},newint[]{R.id.listView}); myListView.setAdapter(adapter); myListView.setOnItemClickListener(newAdapterView.OnItemClickListener(){ publicvoidonItemClick(AdapterView<?>arg0,Viewarg1,intarg2, longarg3){ myCursor.moveToPosition(arg2);//将myCursor移到所单击的值,这个值是数据库中的行标是固定不变的 _id=myCursor.getInt(0);//取得第0列字段_id的值,这个值相当于数据库的主键处于自增状态,相对于整个数据库而言,这个值是实际数据库中字段的真实值 Log.d("arg2:_id",arg2+":"+_id); myEditText.setText(myCursor.getString(1));//取得第1列字段的值 } }); myListView.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){ publicvoidonItemSelected(AdapterView<?>arg0,Viewarg1, intarg2,longarg3){ SQLiteCursorsc=(SQLiteCursor)arg0.getSelectedItem(); _id=sc.getInt(0); myEditText.setText(sc.getString(1)); } publicvoidonNothingSelected(AdapterView<?>arg0){ } }); } @Override publicbooleanonCreateOptionsMenu(Menumenu){ super.onCreateOptionsMenu(menu); menu.add(Menu.NONE,MENU_ADD,0,R.string.create); menu.add(Menu.NONE,MENU_EDIT,0,R.string.edit); menu.add(Menu.NONE,MENU_DELETE,0,R.string.delete); returntrue; } @Override publicbooleanonOptionsItemSelected(MenuItemitem){ super.onOptionsItemSelected(item); switch(item.getItemId()){ caseMENU_ADD: this.addToDo(); break; caseMENU_EDIT: this.editToDo(); break; caseMENU_DELETE: this.deleteToDo(); break; } returntrue; } privatevoidaddToDo(){ if(!"".equals(myEditText.getText().toString())){ myToDoDB.insert(myEditText.getText().toString()); myCursor.requery(); myListView.invalidateViews(); myEditText.setText(""); _id=0; } } privatevoideditToDo(){ if(!"".equals(myEditText.getText().toString())){ myToDoDB.update(_id,myEditText.getText().toString()); myCursor.requery();//更新游标 myListView.invalidateViews();//更新ListView内容 myEditText.setText(""); _id=0; } } privatevoiddeleteToDo(){ if(_id!=0){ myToDoDB.delete(_id); myCursor.requery(); myListView.invalidateViews(); myEditText.setText(""); _id=0; } } } packagecom.android.sucre; importandroid.content.ContentValues; importandroid.content.Context; importandroid.database.Cursor; importandroid.database.sqlite.SQLiteDatabase; importandroid.database.sqlite.SQLiteDatabase.CursorFactory; importandroid.database.sqlite.SQLiteOpenHelper; /** *创建数据库 *@authorqiaolei * */ publicclassToDoDBextendsSQLiteOpenHelper{ privatefinalstaticStringDATABASE_NAME="todo_db"; privatefinalstaticintDATABASE_VERSION=1; privatefinalstaticStringTABLE_NAME="todo_table"; publicfinalstaticStringFIELD_id="_id"; publicfinalstaticStringFIELD_TEXT="todo_text"; publicToDoDB(Contextcontext){ super(context,DATABASE_NAME,null,DATABASE_VERSION); } @Override publicvoidonCreate(SQLiteDatabasedb){ //创建的表有两列,FIELD_ID为主键自动增长 Stringsql="createtable"+TABLE_NAME+"("+FIELD_id+"integerprimarykeyautoincrement,"+FIELD_TEXT+"text)"; db.execSQL(sql); } @Override publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){ Stringsql="droptableifexists"+TABLE_NAME+""; db.execSQL(sql); onCreate(db); } publicCursorselect(){ SQLiteDatabasedb=this.getReadableDatabase(); Cursorcursor=db.query(TABLE_NAME,null,null,null,null,null,null); returncursor; } publiclonginsert(Stringtext){ SQLiteDatabasedb=this.getReadableDatabase(); ContentValuescv=newContentValues(); cv.put(FIELD_TEXT,text); longrow=db.insert(TABLE_NAME,null,cv); returnrow; } publicvoiddelete(intid){ SQLiteDatabasedb=this.getReadableDatabase(); Stringwhere=FIELD_id+"=?"; String[]whereValue={Integer.toString(id)}; db.delete(TABLE_NAME,where,whereValue); } publicvoidupdate(intid,Stringtext){ SQLiteDatabasedb=this.getReadableDatabase(); Stringwhere=FIELD_id+"=?"; String[]whereValue={Integer.toString(id)}; ContentValuescv=newContentValues(); cv.put(FIELD_TEXT,text); db.update(TABLE_NAME,cv,where,whereValue); } } 本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/765101,如需转载请自行联系原作者