ABKYH 发表于 2016-12-1 07:14:13

SQLite数据库的简单实现

  实现功能:


   
  
  代码实现:
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);       
}       
}
页: [1]
查看完整版本: SQLite数据库的简单实现