dbHelper.java

package com.terry;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.util.Log;public class dbHelper extends SQLiteOpenHelper {private final static String DATABASE_NAME="sec_db";private final static int DATABASE_VERSION=1;private final static String TABLE_NAME="sec_pwd";public final static String FIELD_ID="_id"; public final static String FIELD_TITLE="sec_Title";public dbHelper(Context context){   /** * 通过构造函数来创建数据库,如果进入此函数,不存在此数据库则创建,如果存在此数据库则打开连接, * 只要进入此方法就可以用打开的连接获得getWritableDatabase()或getReadableDatabase()这两个方法。 */super(context, DATABASE_NAME,null, DATABASE_VERSION);} /**  * 一个数据库中可以包含多个表,每一条数据都存在指定的表中,要创建可以通过 execSQL 方法来执行一条 SQL 语句。  */@Overridepublic void onCreate(SQLiteDatabase db) {// TODO Auto-generated method stub//创建了表名为“sec_pwd” 的数据表,表内存在一个 integer 类型的主键和一个 text 类型的字段,并执行创建该表。String sql="Create table "+TABLE_NAME+"("+FIELD_ID+" integer primary key autoincrement,"+FIELD_TITLE+" text );";db.execSQL(sql); }@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stubString sql=" DROP TABLE IF EXISTS "+TABLE_NAME;db.execSQL(sql);onCreate(db);}    /** * 查询数据 * @return */public Cursor select(){SQLiteDatabase db=this.getReadableDatabase();Cursor cursor=db.query(TABLE_NAME, null, null, null, null, null,  " _id desc");   return cursor;}/** * 添加数据 * @param Title * @return */public long insert(String Title){   /** * 封装了一个使用SQLite 的 insert 方法,向表中添加数据,但是insert 方法要求把数据都打包到 ContentValues 中, *  ContentValue 其实可就是一个 HashTable,Key值是字段名称,Value 值是字段的值。 * 通过 ContentValues 的put 方法就可以把数据库放到 ContentValue 对象中,然后插入到表中去。 */SQLiteDatabase db=this.getWritableDatabase();ContentValues cv=new ContentValues(); cv.put(FIELD_TITLE, Title);long row=db.insert(TABLE_NAME, null, cv);return row;}/** * 删除数据 * @param id */public void delete(int id){SQLiteDatabase db=this.getWritableDatabase();String where=FIELD_ID+"=?";String[] whereValue={Integer.toString(id)};db.delete(TABLE_NAME, where, whereValue);}/** * 修改数据 * @param id * @param Title */public void update(int id,String Title){SQLiteDatabase db=this.getWritableDatabase();String where=FIELD_ID+"=?";String[] whereValue={Integer.toString(id)};ContentValues cv=new ContentValues(); cv.put(FIELD_TITLE, Title);db.update(TABLE_NAME, cv, where, whereValue);}}

这里用到了Menu做功能按钮,实例代码如下:

package com.terry;

import android.app.Activity;import android.database.Cursor;import android.database.sqlite.SQLiteCursor;import android.os.Bundle; import android.view.Menu;  import android.view.MenuItem;import android.view.View;import android.widget.AdapterView;import android.widget.EditText;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.SimpleCursorAdapter;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView.OnItemSelectedListener;public class testDbActivity extends Activity {private dbHelper db;private Cursor myCursor;private ListView myListView;private EditText myEditText;private int _id;protected final static int MENU_ADD=Menu.FIRST;protected final static int MENU_EDIT=Menu.FIRST+1;protected final static int MENU_DELETE=Menu.FIRST+2;   @Overridepublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stub   super.onCreateOptionsMenu(menu);menu.add(Menu.NONE, MENU_ADD, 0, R.string.ADD);menu.add(Menu.NONE, MENU_EDIT, 0,R.string.EDIT);menu.add(Menu.NONE, MENU_DELETE, 0,R.string.DELETE); return true;}   @Overridepublic boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stubsuper.onOptionsItemSelected(item); switch (item.getItemId()) {case MENU_ADD:operation("add");break;case MENU_EDIT:operation("edit");break;case MENU_DELETE:operation("delete");break;default:break;}return true;}             /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        myEditText=(EditText)findViewById(R.id.EditText1);        myListView=(ListView)findViewById(R.id.ListView1);        db=new dbHelper(testDbActivity.this);        myCursor=db.select();        SimpleCursorAdapter adpater=new SimpleCursorAdapter(this        , R.layout.test, myCursor,        new String[]{dbHelper.FIELD_TITLE},        new int[]{R.id.topTextView});        myListView.setAdapter(adpater);                myListView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {// TODO Auto-generated method stubmyCursor.moveToPosition(arg2);_id=myCursor.getInt(0);myEditText.setText(myCursor.getString(1));}});                        myListView.setOnItemSelectedListener(new OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) {// TODO Auto-generated method stubSQLiteCursor sc=(SQLiteCursor)arg0.getSelectedItem();_id=sc.getInt(0);myEditText.setText(sc.getString(1));}@Overridepublic void onNothingSelected(AdapterView<?> arg0) {// TODO Auto-generated method stub}});    }    private void operation(String cmd)    {    if(myEditText.getText().toString().equals(""))    return;    if(cmd=="add")    db.insert( myEditText.getText().toString());    if(cmd=="edit")    db.update(_id,  myEditText.getText().toString());    if(cmd=="delete")    db.delete(_id);    myCursor.requery();    myListView.invalidateViews();    myEditText.setText("");    _id=0;        }                                   }


更多相关文章

  1. 一句话锁定MySQL数据占用元凶
  2. JAVA-ANDROID
  3. android 异步通信简单小计
  4. 为何Android普通APP可以执行私有数据中的so文件,而system app却不
  5. Android(安卓)GifImageView加载Gif图片及原理
  6. Android9 framework 按键音调用流程及自定义按键音(替换原生按键
  7. Android在Service服务中调用Activity活动的方法,实现UI界面更新操
  8. 非985、211毕业,我是如何加入腾讯的?(附Android通关秘籍)
  9. Android并发编程 多线程与锁

随机推荐

  1. Android setBackground的一个小问题
  2. Android(安卓)实现阅读pdf格式的文件和an
  3. Android中BroadCastReceiver使用(整理)
  4. Android利用wireshark抓取网络数据包
  5. Android中设置中文粗体的方法
  6. 友盟推送android 8.0系统不显示推送消息
  7. 编译用于Android的FFmpeg&x264
  8. Android如何进行数字签名与优化
  9. Android Wifi子系统源代码View
  10. Android控件拖动