Android数据储存之SQLiteDatabase SQLiteOpenHelper类的简单使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android数据储存之SQLiteDatabase SQLiteOpenHelper类的简单使用相关的知识,希望对你有一定的参考价值。

SQLiteOpenHelper 简介:

SQLiteOpenHelper是一个借口!所以不能直接实例化!那我们想要得到SQLiteOpenHelper对象就需要实现该接口!创建该接口的实现类对象!

该对象中有如下常用方法:

getReadableDatabase()   打开或创建数据库,返回一个SQLiteDatabase对象;

getWritableDatabase()    打开或创建数据库,返回一个SQLiteDatabase对象;

getReadableDatabase() 与 getWritableDatabase() 它的区别:

使用getReadableDatabase() 获取SQLiteDatabase对象时如果该数据库不可以写入时(如磁盘空间已满)getReadableDatabase()方法返回的SQLiteDatabase对象时只可以读取该数据库中的数据

而方法getReadableDatabase()则会出现异常

abstract void

  onCreate(SQLiteDatabase db)

该方法是第一次创建数据库的时候才会调用!如果程序中已经有该数据库,该方法则不会被再次调用!通常表的初始化会写在该方法中!

abstract void

  onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

该方法是当数据库版本更新的时候会被调用!在创建数据库的时候我们会设置一个数据库的版本!如果该数据库的版本有改动则就会调用该方法!

synchronized void

  close()

该方法关闭数据库!

String getDatabaseName()

获取数据库名称!

自定义我们自己的SQLiteOpenHelper

 1 public class mysqliteHelper extends SQLiteOpenHelper {
 2     private static String My_sql;
 3     private Context context;
 4     public MySqliteHelper(Context context, String name, CursorFactory factory,
 5             int version) {
 6         super(context, name, null, version);
 7         this.context = context;
 8     }
 9 
10     @Override
11     public void onCreate(SQLiteDatabase db) {
12         My_sql = "CREATE TABLE MYTABLE (_ID INTEGER PRIMARY KEY,_NAME,_AGE,_ADDRESS)";
13         db.execSQL(My_sql);
14     }
15 
16     @Override
17     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
18         Toast.makeText(context, "旧版本:"+oldVersion+",新版本"+newVersion, 0).show();
19     }
20 
21 }

使用MySqliteHelper 操作数据库:

 1 public class MainActivity extends Activity implements OnClickListener{
 2     private Button btnQuery,btnUpdate,btnAdd,btnDelete;
 3     private MySqliteHelper mySqliteHelper;
 4     private int version = 2;
 5     private SQLiteDatabase database;
 6     private ContentValues contentValues;
 7     @Override
 8     protected void onCreate(Bundle savedInstanceState) {
 9         super.onCreate(savedInstanceState);
10         setContentView(R.layout.activity_main);
11         initView();
12         setEvent();
13     }
14 
15     private void setEvent() {
16         btnQuery.setOnClickListener(this);
17         btnUpdate.setOnClickListener(this);
18         btnAdd.setOnClickListener(this);
19         btnDelete.setOnClickListener(this);
20     }
21 
22     private void initView() {
23         btnAdd = (Button) this.findViewById(R.id.id_databaseButtonAdd);
24         btnDelete = (Button) this.findViewById(R.id.id_databaseButtonDelete);
25         btnQuery = (Button) this.findViewById(R.id.id_databaseButtonQuery);
26         btnUpdate = (Button) this.findViewById(R.id.id_databaseButtonUpdate);
27         mySqliteHelper  = new MySqliteHelper(this, "MySqlite.db", null, version);//创建数据库
28         database =    mySqliteHelper.getReadableDatabase();//打开数据库返回SQLiteDatabase对象
29         contentValues = new ContentValues();
30     }
31 
32     @Override
33     public void onClick(View v) {
34         switch (v.getId()) {
35         case R.id.id_databaseButtonAdd:
36             contentValues.clear();
37             contentValues.put("_NAME","QQ");
38             contentValues.put("_AGE","15");
39             contentValues.put("_ADDRESS","NO");
40             database.insert("MYTABLE", null, contentValues);
41             break;
42         case R.id.id_databaseButtonQuery:
43             Cursor cursor = database.query("MYTABLE", null, null, null, null, null, null);
44             while (cursor.moveToNext()) {
45                 String name =cursor.getString(cursor.getColumnIndex("_NAME"));
46                 String id =cursor.getString(cursor.getColumnIndex("_ID"));
47                 String age =cursor.getString(cursor.getColumnIndex("_AGE"));
48                 String address =cursor.getString(cursor.getColumnIndex("_ADDRESS"));
49                 Toast.makeText(this,id+"|"+name+"|"+age+"|"+address, 0).show();
50             }
51             break;
52         case R.id.id_databaseButtonDelete:
53             //与上一篇同样的操作
54             break;
55         case R.id.id_databaseButtonUpdate:
56             //与上一篇同样的操作
57             break;
58 
59         default:
60             break;
61         }
62     }
63 
64 }

XML文件:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     android:layout_width="fill_parent"
 3     android:layout_height="fill_parent"
 4     android:orientation="vertical" >
 5 
 6     
 7     <Button
 8         android:id="@+id/id_databaseButtonAdd"
 9         android:layout_width="match_parent"
10         android:layout_height="wrap_content"
11         android:text="添加数据" />
12 
13     <Button
14         android:id="@+id/id_databaseButtonUpdate"
15         android:layout_width="match_parent"
16         android:layout_height="wrap_content"
17         android:text="修改数据" />
18 
19     <Button
20         android:id="@+id/id_databaseButtonDelete"
21         android:layout_width="match_parent"
22         android:layout_height="wrap_content"
23         android:text="删除数据" />
24 
25     <Button
26         android:id="@+id/id_databaseButtonQuery"
27         android:layout_width="match_parent"
28         android:layout_height="wrap_content"
29         android:text="查询数据" />
30 </LinearLayout>

 

以上是关于Android数据储存之SQLiteDatabase SQLiteOpenHelper类的简单使用的主要内容,如果未能解决你的问题,请参考以下文章

Android数据储存之SQLiteDatabase SQLiteOpenHelper类的简单使用

安卓基础之Sqlite数据库最最基础操作

Android安全开发之Provider组件安全

Android SQLite服务--创建增删改查

Android 里的数据储存

如何使用Android从sqlite中的表中删除所有记录?