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
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类的简单使用的更多相关文章
- Android数据储存之SQLiteDatabase 简单增删改查
SQLiteDatabase 使用 SQLiteDatabase提供如下方法来打开一个文件对应的数据库: openDatabase(String path, SQLiteDatabase.Cursor ...
- android数据储存之存储方式
能够将数据储存在内置或可移动存储,数据库,网络.sharedpreference. android能够使用Content provider来使你的私有数据暴漏给其它应用程序. 一.sharedpref ...
- Android数据储存之SharedPreferences总结
写在前面:本文是我参考李刚老师的<疯狂Android讲义>以及API所写的读书笔记,在此表示感谢,本人小白,如有错误敬请指教. SharedPreferences的使用背景: 有时候,应用 ...
- android数据储存之应用安装位置
原文地址:http://developer.android.com/guide/topics/data/install-location.html#Compatiblity 从API8開始,你能够将你 ...
- Android数据储存之SharedPreferences
Android中SharedPreferences通常与Editor连用 接口SharedPreferences常用方法: boolean contains(String str):判断SharedP ...
- Android数据储存之File
openFileOutStream 和 openFileInStream FileInputStream fileInputStream = openFileInput(name); 打开应用下文件 ...
- Android之ListView动态添加数据(SQLiteOpenHelper类添加数据)
一.SQLiteOpenHelper类: 这次我们通过sqlite来动态添加数据,接下来我们创建一个openHelper.java,在前面sqlite博客中我们已经详细的讲了SQLite的创建及使用等 ...
- Android下的数据储存方式(三)
Android下最好的数据储存方式:关系型数据库sqlite. 数据库的创建:使用SqliteOpenHelper类 结合SqliteOpenHelper类和SQLiteDatabase类的帮 ...
- Android 里的数据储存
数据持久化 关于数据储存,这个话题已经被反复讨论过很多次了,我是不建议把网络存储这种方式纳入到数据储存的范围的,因为这个和Android没多少关系,因此就有如下的分类: 本地储存(也称之为数据持久化, ...
随机推荐
- 在TreeView控件节点中显示图片
实现效果: 知识运用: TreeView控件中Nodes集合的Add方法 //创建节点并将节点放入集合中 public virtual TreeNode Add (string key,string ...
- SQL 值得记住的点
概要 记录在学习过程中,遇到的不懂且需要掌握的知识点.主要基于 MySQL. 汇总 replace 函数 删除重复 取子串 substr 项连接 ...
- Dropout & Maxout
[ML] My Journal from Neural Network to Deep Learning: A Brief Introduction to Deep Learning. Part. E ...
- js数据结构处理--------树结构数据遍历
1.深度遍历 深度遍历利用栈来实现 class Stack { constructor () { this.top = 0, // 栈的长度 this.list = [] } push(item) { ...
- SpringBoot学习记录(一)
一.SpringBoot入门 1.SpringBoot简介 简化Spring应用开发的一个框架:整个Spring技术栈的一个大整合:J2EE开发的一站式解决方案: SpringBoot的优点: (1) ...
- Oracle 系统表
--如果一个表拥有DBA\\ALL\\USERS三个前缀 --DBA_前缀表示DBA拥有的或者可以访问的所有关系表 --ALL_前缀表示当前用户做拥有的或者可以访问的所有关系表 --USERS-前缀表 ...
- 使用FreeMarker导出word文档(支持导出图片)
一.添加maven依赖,导入FreeMarker所需要的jar包 <dependency> <groupId>org.freemarker</groupId> &l ...
- c++ 中十进制 八进制 十六进制 二进制转换 最简方法
#include<iostream> using namespace std; int main() { int i; cin>>dec>>i; //cin> ...
- LOJ#6342. 跳一跳(期望)
题意 $n \leqslant 10^5$ Sol 随便推一推就好了吧.. $f[i] = \frac{f[i] + f[i +1] + \dots f[n]}{n - i + 1} + 1$ 移一下 ...
- linux几种文件传输方式
本文记录linux系统中文件传输的多种方式,留作备忘.linux中文件传输的方式有ftp,scp,rsync,rz,sz等,但各个工具的功能又有所区别: FTP : FTP是文件服务器,可实现文件的上 ...