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. Android(java)学习笔记96:layout_weight使用注意事项

    1. android:layout_weight使用说明: layout_weight是权重的意思,也就是各个控件所占的比重,用在LinearLayout布局中.当我们使用layout_weight的 ...

  2. 【BZOJ1972】[SDOI2010] 猪国杀(恶心的大模拟)

    点此看题面 大致题意: 让你模拟一个游戏猪国杀的过程. 几大坑点 对于这种模拟题,具体思路就不讲了,就说说有哪些坑点. 题面有锅,反猪是\(FP\). 数据有锅,牌堆中的牌可能不够用,牌堆为空之后需一 ...

  3. python_59_装饰器2

    #匿名函数,无函数名 calc=lambda x:x*3 print(calc(3)) sum=lambda x,y,z:x+y+z print(sum(1,2,3)) ''' 高阶函数 a:把一个函 ...

  4. oo作业第四单元总结暨结课总结

    目录 一.第四单元作业架构设计 1.第一次UML作业架构设计 2.第二次UML作业架构设计 二.架构设计和OO方法理解演进 三.测试理解与实践的演进 四.课程收获总结 五.三个具体改进建议 一.第四单 ...

  5. python之道12

    整理今天笔记,课上代码最少敲3遍. 用列表推导式做下列小题 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母 l = ['wusir', 'laonanhai', 'aa', 'b', 'tai ...

  6. 问题010:在Java中,什么是常量,什么是变量?

    Java中常量如何分类? 1.整数常量,所有的整数. 整数又分为 int (integer) 占用4个字节 一个字节占几个二进制位?8个二进制位,一个整型变量占32位二进制位 (内存中开辟出来的存储空 ...

  7. 虚拟机Linux_Mint中安装vmtools增强工具

    一开始用VmwarePro安装Linux系统时,系统的整体界面会缩在屏幕中间的一小块区域内.如图: ​ 看的会非常吃力.为了更好的解决这个问题,就需要安装Vmtools增强工具.安装步骤如下: 1. ...

  8. lrzsz包中的rz和sz命令

    安装包:lrzsz rz命令:将物理机文件复制到虚拟机 sz命令:将虚拟机文件复制到物理机

  9. 用dom1来实现,根据光标移动自动给表单加上背景色,光标移开自动去除背景色

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. linux正则表达式企业级深度实践案例1

    linux正则表达式结合三剑客企业级实践: 1.取系统ip [root@redhat~]#  ifconfig  eth0 解答: 替换命令: sed  's#支持正则位置##g'  file 先取第 ...