Android(安卓)SQLiteDatabase 的使用
16lz
2022-01-25
package com.Aina.Android;import android.app.Activity;import android.app.AlertDialog;import android.content.ContentValues;import android.content.DialogInterface;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.SimpleCursorAdapter;public class Test extends Activity {/** Called when the activity is first created. */private ListView lv = null;private SQLiteDatabase mSQLiteDatabase = null;private static final String DATABASE_NAME = "Test.db";private static final String TABLE_NAME = "table_test";private static final String COLUMN_ID = "_id";// INTEGER PRIMARY KEYprivate static final String COLUMN_NAME = "name";// TEXTprivate static final String COLUMN_AGE = "age";// INTEGERprivate static final String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS "+ TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY,"+ COLUMN_NAME + " TEXT," + COLUMN_AGE + " INTEGER)";@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);lv = (ListView) this.findViewById(R.id.ListView01);try {mSQLiteDatabase = this.openOrCreateDatabase(DATABASE_NAME,Activity.MODE_PRIVATE, null);} catch (Exception ex) {this.ShowDialog("打开或者创建数据库异常:" + ex.getMessage());}try {mSQLiteDatabase.execSQL(CREATE_TABLE);} catch (Exception ex) {this.ShowDialog("创建表异常:" + ex.getMessage());}// this.InsertData();// this.InsertData2();// this.AddData();// this.UpdateData();// this.UpdateData2();// this.UpdateData3();// this.DeleteData();// this.DeleteData2();// this.DeleteData3();this.SelectData();}@Overrideprotected void onPause() {super.onPause();mSQLiteDatabase.close();// 关闭数据库}/** * 插入数据-execSQL */private void InsertData() {try {String str = "INSERT INTO " + TABLE_NAME + " (" + COLUMN_NAME + ","+ COLUMN_AGE + ")VALUES('张三',30)";mSQLiteDatabase.execSQL(str);} catch (Exception ex) {this.ShowDialog("插入数据异常:" + ex.getMessage());}}/** * 插入数据-execSQL */private void InsertData2() {try {String str = "INSERT INTO " + TABLE_NAME + " (" + COLUMN_NAME + ","+ COLUMN_AGE + ")VALUES(?,?)";Object[] ob = new Object[] { "王五", 50 };mSQLiteDatabase.execSQL(str, ob);} catch (Exception ex) {this.ShowDialog("插入数据异常:" + ex.getMessage());}}/** * 插入数据-insert() nullColumnHack,这个参数需要传入一个列名。SQL标准并不允许插入所有列均为空的一行数据, * 所以当传入的initialValues值为空或者为0时 * ,用nullColumnHack参数指定的列会被插入值为NULL的数据,然后再将此行插入到表中。 */private void AddData() {try {ContentValues cv = new ContentValues();cv.put(COLUMN_NAME, "李四");cv.put(COLUMN_AGE, 40);// long num = mSQLiteDatabase.insert(TABLE_NAME, COLUMN_NAME, cv);long num = mSQLiteDatabase.insertOrThrow(TABLE_NAME, null, cv);this.setTitle("num==" + num);} catch (Exception ex) {this.ShowDialog("插入数据异常:" + ex.getMessage());}}/** * 更新数据 */private void UpdateData() {try {String str = "UPDATE " + TABLE_NAME + " SET " + COLUMN_AGE+ " = 25 WHERE _id=1";mSQLiteDatabase.execSQL(str);} catch (Exception ex) {this.ShowDialog("更新数据异常:" + ex.getMessage());}}/** * 更新数据 */private void UpdateData2() {try {String str = "UPDATE " + TABLE_NAME + " SET " + COLUMN_AGE+ " = ? WHERE _id=?";Object[] Ob = new Object[] { 33, 2 };mSQLiteDatabase.execSQL(str, Ob);} catch (Exception ex) {this.ShowDialog("更新数据异常:" + ex.getMessage());}}/** * 更新数据 */private void UpdateData3() {try {ContentValues cv = new ContentValues();cv.put(COLUMN_NAME, "李四4");cv.put(COLUMN_AGE, 43);int num = mSQLiteDatabase.update(TABLE_NAME, cv,COLUMN_NAME + "=?", new String[] { "李四" });this.setTitle("修改行数num=" + num);} catch (Exception ex) {this.ShowDialog("更新数据异常:" + ex.getMessage());}}/** * 删除数据 */private void DeleteData() {try {String str = "DELETE FROM " + TABLE_NAME + " WHERE _id=3";mSQLiteDatabase.execSQL(str);} catch (Exception ex) {this.ShowDialog("删除数据异常:" + ex.getMessage());}}/** * 删除数据 */private void DeleteData2() {try {String str = "DELETE FROM " + TABLE_NAME + " WHERE _id=?";mSQLiteDatabase.execSQL(str, new Object[] { 2 });} catch (Exception ex) {this.ShowDialog("删除数据异常:" + ex.getMessage());}}/** * 删除数据 */private void DeleteData3() {try {int num = mSQLiteDatabase.delete(TABLE_NAME, "_id=1", null);this.setTitle("删除行数num=" + num);} catch (Exception ex) {this.ShowDialog("删除数据异常:" + ex.getMessage());}}/** * 查询数据 */private void SelectData() {try {String sql = "SELECT * FROM " + TABLE_NAME;Cursor cursor = mSQLiteDatabase.rawQuery(sql,null);// Cursor cursor = mSQLiteDatabase.query(TABLE_NAME, new String[] {// COLUMN_ID, COLUMN_NAME, COLUMN_AGE }, COLUMN_NAME + "=?",// new String[] { "李四" }, null, null, null);if (cursor != null) {ListAdapter adapter = new SimpleCursorAdapter(this,R.layout.ss, cursor, new String[] { COLUMN_ID,COLUMN_NAME, COLUMN_AGE },new int[] { R.id.TextView1, R.id.TextView2,R.id.TextView3 });lv.setAdapter(adapter);}} catch (Exception ex) {this.ShowDialog("查询数据异常:" + ex.getMessage());}}/** * 删除表 */private void DropTable(){try{String sql = "DROP TABLE "+TABLE_NAME;mSQLiteDatabase.execSQL(sql);}catch(Exception ex){this.ShowDialog("删除表异常:"+ex.getMessage());}}/** * 删除数据库 */private void DropDatabase(){try{this.deleteDatabase(DATABASE_NAME);}catch(Exception ex){this.ShowDialog("删除数据库异常:"+ex.getMessage());}}/** * 提示对话框 * @param msg */private void ShowDialog(String msg) {new AlertDialog.Builder(this).setTitle("提示").setMessage(msg).setPositiveButton("OK", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}}).show();}}
2.main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><TextView android:layout_width="fill_parent"android:layout_height="wrap_content" android:text="@string/hello" /><ListView android:id="@+id/ListView01" android:layout_width="fill_parent"android:layout_height="wrap_content"></ListView></LinearLayout>
3.ss.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal" android:layout_width="fill_parent"android:paddingTop="5dip" android:paddingBottom="5dip" android:paddingLeft="5dip"android:layout_height="wrap_content"><TextView android:id="@+id/TextView1" android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="" /><TextView android:id="@+id/TextView2" android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20px" android:layout_marginLeft="50dip" android:paddingRight="50dip"android:text="" /><TextView android:id="@+id/TextView3" android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="" /></LinearLayout>
更多相关文章
- android 数据库操作
- Android(安卓)保存浏览记录 SharedPreTools
- Android与(Servlet)服务器交互
- Android(安卓)ProtoBuf
- Android(安卓)Network数据存储
- Android(安卓)将asserts文件夹内文件写入SD卡中
- Android腾讯微薄客户端开发十三:提及篇(与我有关的微博)
- Android(安卓)ExpandableListActivity 学习笔记
- mybatisplus的坑 insert标签insert into select无参数问题的解决