实现功能:
代码实现:
1、先实现SQLiteOpenHelper,以便系统可以自动创建数据库。
public class StringDBImpl extends SQLiteOpenHelper {
public static final String DBNAME = "stringdb.db";
public static final String TABLENAME ="stringtable";
public static final String COLUMN1 = "textview";
public StringDBImpl(Context context) {
super(context, DBNAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql ="CREATE TABLE " + TABLENAME + "(_id integer primary key autoincrement," + COLUMN1 + " text)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
2、Dao层,getWritableDatabase和getReadableDatabase可以立刻创建数据库,如果数据库已经存在,则得到数据库。调用其中的增删改查方法。
public class StringDao {
StringDBImpl database = null;
public StringDao(Context context) {
database = new StringDBImpl(context);
}
public long insert(String str) {
SQLiteDatabase db = database.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(StringDBImpl.COLUMN1, str);
db.insert(StringDBImpl.TABLENAME, StringDBImpl.COLUMN1, values);
}
public Cursor query() {
SQLiteDatabase db = database.getReadableDatabase();
Cursor cursor = db.query(StringDBImpl.TABLENAME, null, null, null, null, null, null);
return cursor;
}
public void delete(String str) {
SQLiteDatabase db = database.getWritableDatabase();
db.delete(StringDBImpl.TABLENAME, StringDBImpl.COLUMN1+"=?" , new String[]{str});
}
public void updata(ContentValues values,int _id) {
SQLiteDatabase db = database.getWritableDatabase();
db.update(StringDBImpl.TABLENAME, values, "_id=?", new String[]{String.valueOf(_id)});
}
}
3、主界面。这里需要注意修改阶段。
public class MainActivity extends Activity {
private StringDao dao;
private EditText editText;
private ListView listView;
private Cursor c;
private int _id;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editText = (EditText) this.findViewById(R.id.edittext);
listView = (ListView) this.findViewById(R.id.listview);
dao = new StringDao(this);
c = dao.query();
// ListView的显示,最好用系统自带的viewItem,当然也可以找到源文件,再自行修改
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_1,
c ,
new String[] {StringDBImpl.COLUMN1},
new int[] {android.R.id.text1});
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view,
int position, long id) {
c.moveToPosition(position);
_id = c.getInt(0);
editText.setText(c.getString(1));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 0, 0, "增加");
menu.add(0, 1, 0, "修改");
menu.add(0, 2, 0, "删除");
return super.onCreateOptionsMenu(menu);
}
//用ListView动态显示数据库数据,则需要动态更新adapter,这里使用的是simpleCursorAdapter,调用其requert()即可更新adapter;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 0:
String str = editText.getText().toString();
dao.insert(str);
c.requery();
break;
case 1:
str = editText.getText().toString();
ContentValues values = new ContentValues();
values.put(StringDBImpl.COLUMN1, str);
dao.updata(values, _id);
c.requery();
break;
case 2:
str = editText.getText().toString();
dao.delete(str);
c.requery();
break;
}
return super.onOptionsItemSelected(item);
}
} |