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

 public class MySqliteHelper extends SQLiteOpenHelper {
private static String My_sql;
private Context context;
public MySqliteHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, null, version);
this.context = context;
} @Override
public void onCreate(SQLiteDatabase db) {
My_sql = "CREATE TABLE MYTABLE (_ID INTEGER PRIMARY KEY,_NAME,_AGE,_ADDRESS)";
db.execSQL(My_sql);
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Toast.makeText(context, "旧版本:"+oldVersion+",新版本"+newVersion, 0).show();
} }

使用MySqliteHelper 操作数据库:

 public class MainActivity extends Activity implements OnClickListener{
private Button btnQuery,btnUpdate,btnAdd,btnDelete;
private MySqliteHelper mySqliteHelper;
private int version = 2;
private SQLiteDatabase database;
private ContentValues contentValues;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
setEvent();
} private void setEvent() {
btnQuery.setOnClickListener(this);
btnUpdate.setOnClickListener(this);
btnAdd.setOnClickListener(this);
btnDelete.setOnClickListener(this);
} private void initView() {
btnAdd = (Button) this.findViewById(R.id.id_databaseButtonAdd);
btnDelete = (Button) this.findViewById(R.id.id_databaseButtonDelete);
btnQuery = (Button) this.findViewById(R.id.id_databaseButtonQuery);
btnUpdate = (Button) this.findViewById(R.id.id_databaseButtonUpdate);
mySqliteHelper = new MySqliteHelper(this, "MySqlite.db", null, version);//创建数据库
database = mySqliteHelper.getReadableDatabase();//打开数据库返回SQLiteDatabase对象
contentValues = new ContentValues();
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.id_databaseButtonAdd:
contentValues.clear();
contentValues.put("_NAME","QQ");
contentValues.put("_AGE","15");
contentValues.put("_ADDRESS","NO");
database.insert("MYTABLE", null, contentValues);
break;
case R.id.id_databaseButtonQuery:
Cursor cursor = database.query("MYTABLE", null, null, null, null, null, null);
while (cursor.moveToNext()) {
String name =cursor.getString(cursor.getColumnIndex("_NAME"));
String id =cursor.getString(cursor.getColumnIndex("_ID"));
String age =cursor.getString(cursor.getColumnIndex("_AGE"));
String address =cursor.getString(cursor.getColumnIndex("_ADDRESS"));
Toast.makeText(this,id+"|"+name+"|"+age+"|"+address, 0).show();
}
break;
case R.id.id_databaseButtonDelete:
//与上一篇同样的操作
break;
case R.id.id_databaseButtonUpdate:
//与上一篇同样的操作
break; default:
break;
}
} }

XML文件:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <Button
android:id="@+id/id_databaseButtonAdd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="添加数据" /> <Button
android:id="@+id/id_databaseButtonUpdate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="修改数据" /> <Button
android:id="@+id/id_databaseButtonDelete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="删除数据" /> <Button
android:id="@+id/id_databaseButtonQuery"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="查询数据" />
</LinearLayout>

Android数据储存之SQLiteDatabase SQLiteOpenHelper类的简单使用的更多相关文章

  1. Android数据储存之SQLiteDatabase 简单增删改查

    SQLiteDatabase 使用 SQLiteDatabase提供如下方法来打开一个文件对应的数据库: openDatabase(String path, SQLiteDatabase.Cursor ...

  2. android数据储存之存储方式

    能够将数据储存在内置或可移动存储,数据库,网络.sharedpreference. android能够使用Content provider来使你的私有数据暴漏给其它应用程序. 一.sharedpref ...

  3. Android数据储存之SharedPreferences总结

    写在前面:本文是我参考李刚老师的<疯狂Android讲义>以及API所写的读书笔记,在此表示感谢,本人小白,如有错误敬请指教. SharedPreferences的使用背景: 有时候,应用 ...

  4. android数据储存之应用安装位置

    原文地址:http://developer.android.com/guide/topics/data/install-location.html#Compatiblity 从API8開始,你能够将你 ...

  5. Android数据储存之SharedPreferences

    Android中SharedPreferences通常与Editor连用 接口SharedPreferences常用方法: boolean contains(String str):判断SharedP ...

  6. Android数据储存之File

    openFileOutStream 和 openFileInStream FileInputStream fileInputStream = openFileInput(name);  打开应用下文件 ...

  7. Android之ListView动态添加数据(SQLiteOpenHelper类添加数据)

    一.SQLiteOpenHelper类: 这次我们通过sqlite来动态添加数据,接下来我们创建一个openHelper.java,在前面sqlite博客中我们已经详细的讲了SQLite的创建及使用等 ...

  8. Android下的数据储存方式(三)

      Android下最好的数据储存方式:关系型数据库sqlite.   数据库的创建:使用SqliteOpenHelper类 结合SqliteOpenHelper类和SQLiteDatabase类的帮 ...

  9. Android 里的数据储存

    数据持久化 关于数据储存,这个话题已经被反复讨论过很多次了,我是不建议把网络存储这种方式纳入到数据储存的范围的,因为这个和Android没多少关系,因此就有如下的分类: 本地储存(也称之为数据持久化, ...

随机推荐

  1. 微信jssdk实现分享到微信

    本来用的是这个插件http://overtrue.me/share.js/和百度分享 相同之处:在微信分享的时候,分享的链接都不能获取到缩略图... 不同之处:百度分享在微信低版本是可以看到缩略图的( ...

  2. 用户在设置密码时,提醒请输入半角字符(vue+element+valid)

    要保证callback()只有一个出口 rules:{ newPassword: [{validator:(rule,newPassword,callback)=>{ var all = fal ...

  3. Miller-Rabbin 素性测试 和 Pollard_rho整数分解

    今天学习一下Miller-Rabbin  素性测试 和 Pollard_rho整数分解. 两者都是概率算法. Miller_Rabbin素性测试是对简单伪素数pseudoprime测试的改进. (ps ...

  4. Using Autorelease Pool Blocks

    https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAut ...

  5. mongo 4.0以下版本 类型转换

    .文档格式 "Values" : [ { "key" : "姓名", "value" : "jenny&quo ...

  6. 转:Python集合(set)类型的操作

    转自:http://blog.csdn.net/business122/article/details/7541486 python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系 ...

  7. 通过jQuery遍历div里面的checkbox

    遍历: $('#queryUser2 input[type="checkbox"]:checked').each( function () { a = a + $(this).va ...

  8. STL笔记(に)--vector容器

    Vector 1.可变长的动态数组 2.需包含头文件#include<vector> (当然,如果用了万能头文件#include<bits/stdc++.h>则可忽略) 3.支 ...

  9. 【C++学习笔记】 链式前向星

    链式前向星是一种常见的储存图的方式(是前向星存图法的优化版本),支持增边和查询,但不支持删边(如果想要删除指定的边建议用邻接矩阵). 储存方式 首先定义数组 head[ i ] 来储存从节点 i 出发 ...

  10. AIDE

    安装 yum install aide 修改配置文件 vim /etc/aide.conf (指定对哪些文件进行检测) /test/chameleon R /bin/ps R+a /usr/bin/c ...