SQLite数据库的插入删除查询操作

83
回复
1932385
查看
  [复制链接]

328

主题

383

帖子

4627

安币

码皇(巴士元老)

Rank: 8Rank: 8

发表于 2011-10-5 16:12:02 | 显示全部楼层 |阅读模式
本文讲如何使用Android中内置的SQLite轻量数据库,Android SDK中已经对其进行了封装,使用起来相当简单。创建类继承SQLiteOpenHelper就可以将数据库的创建和应用版本更新后数据库的重建纳入自动管理中。本文实现一个简单的Sqlite数据库,存储人名和电话号码。效果如下截图:

主Activity 类SqliteSample.java 代码:
  1. package jtapp.sqlitesamples;

  2. import android.app.Activity;
  3. import android.database.Cursor;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;
  8. import android.widget.TextView;

  9. public class SqliteSample extends Activity {
  10.         private DBHelper mDBHelper = null;
  11.         private Button btCreateDb = null;
  12.         private Button btInsertData = null;
  13.         private Button btViewData = null;
  14.         private Button btDelOne = null;
  15.         private Button btClearAll = null;
  16.        
  17.     /** Called when the activity is first created. */
  18.     @Override
  19.     public void onCreate(Bundle savedInstanceState) {
  20.         super.onCreate(savedInstanceState);
  21.         setContentView(R.layout.main);
  22.         
  23.         btCreateDb = (Button)findViewById(R.id.Button01);
  24.         btCreateDb.setOnClickListener(new ClickViewHandler());
  25.         btInsertData = (Button)findViewById(R.id.Button02);
  26.         btInsertData.setOnClickListener(new ClickViewHandler());
  27.         btInsertData.setEnabled(false);
  28.         btViewData = (Button)findViewById(R.id.Button03);
  29.         btViewData.setOnClickListener(new ClickViewHandler());
  30.         btViewData.setEnabled(false);
  31.         btDelOne = (Button)findViewById(R.id.Button04);
  32.         btDelOne.setOnClickListener(new ClickViewHandler());
  33.         btDelOne.setEnabled(false);
  34.         btClearAll = (Button)findViewById(R.id.Button05);
  35.         btClearAll.setOnClickListener(new ClickViewHandler());
  36.         btClearAll.setEnabled(false);
  37.     }

  38.     public class ClickViewHandler implements OnClickListener {
  39.             @Override
  40.             public void onClick(View v) {
  41.                     if (v == btCreateDb) {
  42.                             createDB();
  43.                     } else if (v == btInsertData) {
  44.                             insertSomeRecords();
  45.                     } else if (v == btViewData) {
  46.                             ViewRecords();
  47.                     } else if (v == btDelOne) {
  48.                             DelOne();
  49.                     } else if (v == btClearAll) {
  50.                             mDBHelper.delAllPeople();
  51.                     }
  52.             }
  53.     }
  54.    
  55.         private void createDB() {
  56.                 String DB_NAME = "sqlitedb1";
  57.                 mDBHelper = new DBHelper(
  58.                                 SqliteSample.this, DB_NAME, null, 1);
  59.                 assert(mDBHelper != null);
  60.                 btCreateDb.setEnabled(false);
  61.                 btInsertData.setEnabled(true);
  62.                 btViewData.setEnabled(true);
  63.                 btDelOne.setEnabled(true);
  64.         btClearAll.setEnabled(true);
  65.         }
  66.         private void insertSomeRecords() {
  67.                 mDBHelper.addPeople("一休", "18602155856");
  68.                 mDBHelper.addPeople("巴巴", "13368565525");
  69.         mDBHelper.addPeople("项羽", "057156856225");
  70.         }
  71.         private void ViewRecords() {
  72.                 // Make the query
  73.                 Cursor c = mDBHelper.getWritableDatabase().query(
  74.                                 DBHelper.TB_NAME,null,null,null,null,null,   
  75.                         DBHelper.NAME + " ASC");
  76.                 StringBuilder sbRecords = new StringBuilder("");
  77.                 if (c.moveToFirst()) {
  78.                         int idxID = c.getColumnIndex(DBHelper.ID);
  79.                         int idxName = c.getColumnIndex(DBHelper.NAME);
  80.                         int idxNumber = c.getColumnIndex(DBHelper.NUMBER1);
  81.                         // Iterator the records
  82.                         do {
  83.                                 sbRecords.append(c.getInt(idxID));
  84.                                 sbRecords.append(". ");
  85.                                 sbRecords.append(c.getString(idxName));
  86.                                 sbRecords.append(", ");
  87.                                 sbRecords.append(c.getString(idxNumber));
  88.                                 sbRecords.append("/n");
  89.                         } while (c.moveToNext());
  90.                 }
  91.                 c.close();
  92.                 // Refresh the content of TextView
  93.                 ((TextView)(findViewById(
  94.                                 R.id.TextView01))).setText(sbRecords);
  95.         }
  96.         private void DelOne() {
  97.                 int id;
  98.                 Cursor c = mDBHelper.getWritableDatabase().query(
  99.                                 DBHelper.TB_NAME,null,null,null,null,null,   
  100.                         DBHelper.NAME + " ASC");
  101.                 if (c.moveToFirst()) {
  102.                         int idxID = c.getColumnIndex(DBHelper.ID);
  103.                         id = c.getInt(idxID);
  104.                         mDBHelper.delPeople(id);
  105.                 }
  106.         }
  107. }
复制代码

ui界面 main.xml 代码,主要是几个bt的放置:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.         android:orientation="vertical" android:layout_width="fill_parent"
  4.         android:layout_height="fill_parent">
  5.         <TextView android:layout_width="fill_parent"
  6.                 android:layout_height="wrap_content" android:text="@string/hello" />
  7.         <TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content" android:layout_height="wrap_content">
  8.                 <Button android:text="create db" android:id="@+id/Button01"
  9.                         android:height="30px" android:layout_width="wrap_content"
  10.                         android:layout_height="wrap_content" />
  11.                 <Button android:text="insert some records" android:id="@+id/Button02"
  12.                         android:height="30px" android:layout_width="wrap_content"
  13.                         android:layout_height="wrap_content" />
  14.         </TableRow>
  15.         <TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content" android:layout_height="wrap_content">
  16.         <Button android:text="delete one" android:id="@+id/Button04"
  17.                 android:height="30px" android:layout_width="wrap_content"
  18.                 android:layout_height="wrap_content" />
  19.         <Button android:text="clear all" android:id="@+id/Button05"
  20.                 android:height="30px" android:layout_width="wrap_content"
  21.                 android:layout_height="wrap_content" />
  22.         </TableRow>
  23.         <Button android:text="view records" android:id="@+id/Button03"
  24.                 android:height="30px" android:layout_width="wrap_content"
  25.                 android:layout_height="wrap_content" android:layout_gravity="center"/>
  26.         <TextView android:text="..." android:id="@+id/TextView01"
  27.                 android:layout_width="wrap_content"
  28.         android:layout_height="wrap_content" />
  29. </LinearLayout>
复制代码
数据库操作类 DBHelper.java 代码:

  1. package jtapp.sqlitesamples;

  2. import android.content.ContentValues;
  3. import android.content.Context;
  4. import android.database.sqlite.SQLiteDatabase;
  5. import android.database.sqlite.SQLiteDatabase.CursorFactory;
  6. import android.database.sqlite.SQLiteOpenHelper;

  7. public class DBHelper extends SQLiteOpenHelper {   
  8.    
  9.     public static final String TB_NAME = "people";   
  10.     public static final String ID = "_id";   
  11.     public static final String NAME = "name";   
  12.     public static final String NUMBER1 = "number1";   
  13.    
  14.     public DBHelper(Context context, String name,   
  15.             CursorFactory factory, int version) {   
  16.         super(context, name, factory, version);
  17.         this.getWritableDatabase();  
  18.     }
  19.    
  20.     /**
  21.      * should be invoke when you never use DBhelper
  22.      * To release the database and etc.
  23.      */
  24.     public void Close() {
  25.             this.getWritableDatabase().close();
  26.     }
  27.   
  28.     public void onCreate(SQLiteDatabase db) {   
  29.         db.execSQL("CREATE TABLE IF NOT EXISTS "   
  30.                 + TB_NAME + " ("   
  31.                 + ID + " INTEGER PRIMARY KEY,"   
  32.                 + NAME + " VARCHAR,"  
  33.                 + NUMBER1 + " VARCHAR)");   
  34.     }   
  35.   
  36.     public void onUpgrade(SQLiteDatabase db,   
  37.             int oldVersion, int newVersion) {   
  38.         db.execSQL("DROP TABLE IF EXISTS "+TB_NAME);   
  39.         onCreate(db);   
  40.     }
  41.    
  42.     public void addPeople(String name, String number) {
  43.             ContentValues values = new ContentValues();   
  44.         values.put(DBHelper.NAME, name);   
  45.         values.put(DBHelper.NUMBER1, number);   
  46.         this.getWritableDatabase().insert(
  47.                         DBHelper.TB_NAME, DBHelper.ID, values);  
  48.     }
  49.    
  50.     public void delPeople(int id) {
  51.         this.getWritableDatabase().delete(
  52.                         DBHelper.TB_NAME, this.ID + " = " + id, null);
  53.     }
  54.    
  55.     public void delAllPeople() {
  56.         this.getWritableDatabase().delete(
  57.                         DBHelper.TB_NAME, null, null);
  58.     }
  59. }  
复制代码
数据库操作主要实现了创建数据库,升级数据库的具体操作,封装了插入单条数据,删除单条数据,和删除全部数据的操作。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

0

主题

160

帖子

176

安币

程序猿

Rank: 2

QQ达人

发表于 2012-3-11 15:26:26 | 显示全部楼层
好复杂啊!

0

主题

11

帖子

107

安币

程序猿

Rank: 2

发表于 2012-4-10 14:50:22 | 显示全部楼层
不错,学习了{:Surprised:}
<-sina_sign,2085943353,c48222d8,2->

4

主题

59

帖子

3

安币

初级码农

Rank: 1

QQ达人

发表于 2012-5-17 15:34:00 | 显示全部楼层
学习  ..

0

主题

34

帖子

74

安币

程序猿

Rank: 2

发表于 2012-6-8 10:13:57 | 显示全部楼层
下载先。。。。

0

主题

40

帖子

127

安币

程序猿

Rank: 2

发表于 2012-6-21 17:07:51 | 显示全部楼层
努力学习{:Snicker:}

2

主题

281

帖子

623

安币

代码手工艺人

Rank: 4

发表于 2012-7-4 21:10:45 | 显示全部楼层
{:Skateboard:}{:Skateboard:}{:Skateboard:}{:Skateboard:}{:Skateboard:}

7

主题

51

帖子

105

安币

程序猿

Rank: 2

发表于 2012-7-5 14:54:19 | 显示全部楼层
好东东,学习。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系我们
关闭
合作电话:
15618560077
Email:
805941275@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们
领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )