SQLite数据存储的基本用法
来源:互联网 发布:mysql 64位 win10 编辑:程序博客网 时间:2024/06/05 00:29
1. 创建数据库并根据需求修改数据库内的表
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MyDatabasesHelper extends SQLiteOpenHelper {
public static final String CREACE_BOOK = "ctrate table Book("
+ "+id integer primary key aitoincrement"
+ "author text"
+ "price real"
+ "pages integer"
+ "name text)";
public static final String CREACE_CATEQORY = "ctrate table Category("
+ "+id integer primary key aitoincrement"
+ "Category_name text"
+ "Category_code text";
private Context mContent;
public MyDatabasesHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
mContent = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREACE_BOOK);//创建一张名为Book的表
//当需求更改后在创建另一张表
db.execSQL(CREACE_CATEQORY);//创建一张名为Category的表
}
/**
* onUpgrade()方法主要是用于更新数据库的,如果当前数据库的版本是1,就只会创建Category一张表.
* 当用户是新用户的时候,就会调用onCreate()方法,创建Book和Category两张表
* 当需求再改变的时候,只需要在onUpgrade()方法里加case即可,这里的swicth-case没有break哦
*
* @param db
* @param oldVersion
* @param newVersion
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion) {
case 1:
db.execSQL(CREACE_CATEQORY);
case 2:
db.execSQL("alter table Book add column category_id integer");
default:
}
}
}
如何调用MyDatabasesHelper
private MyDatabasesHelper myDatabasesHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myDatabasesHelper = new MyDatabasesHelper(this, "Book", null, 1);
myDatabasesHelper.getWritableDatabase();
}
2.添加数据
SQLiteDatabase db = myDatabasesHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name","Nike");
values.put("pages",500);
values.put("price",20.5);
db.insert("Book", null, values); //插入一条数据
3.更新数据
SQLiteDatabase db = myDatabasesHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("price", 30);
db.update("Book", values, "name=?", new String[]{"Nike"}); //将名字是Nike的price改为30
4.删除数据
SQLiteDatabase db = myDatabasesHelper.getWritableDatabase();
db.delete("Book", "pages>?", new String[]{"200"}); //删除pages>200 的记录
5.查询数据
代码示例:
SQLiteDatabase db = myDatabasesHelper.getWritableDatabase();
///查询Book表中所有的数据
Cursor cursor = db.query("Book", null, null, null, null, null, null);
if (cursor.moveToFirst()) {
do {
//遍历Cursor对象,取出数据
String name = cursor.getString(cursor.getColumnIndex("name"));
String author = cursor.getString(cursor.getColumnIndex("author"));
int pages = cursor.getInt(cursor.getColumnIndex("pages"));
double price = cursor.getDouble(cursor.getColumnIndex("price"));
} while (cursor.moveToNext());
}
//一定要记得关闭数据库
cursor.close();
6.使用SQL操作数据库
下面我来简单演示一下,如何直接使用SQL来完成CRUD操作
SQLiteDatabase db = myDatabasesHelper.getWritableDatabase();
6.1 添加数据方法如下:
db.execSQL("insert in Book (name,aythor,pages,price)values(?,?,?,?)", new String[]{"The Da Vinci Code", "Nike", "500", "50"});
6.2更新数据方法如下"
db.execSQL("update Book set price=?where name=?", new String[]{"39.8", "The Da Vinci Code"});
6.3删除数据方法如下:
db.execSQL("delete from Book where pages>?", new String[]{"450"});
6.4查询数据方法如下:
db.execSQL("select* from Book", null);
7.使用事务
SQLiteDatabase db = myDatabasesHelper.getWritableDatabase();
//开启事务
db.beginTransaction();
try {
db.delete("Book", null, null);
if (true) {
//手动抛出一个异常,让事务失败
throw new NullPointerException();
}
ContentValues values = new ContentValues();
values.put("name", "Game of Thrones");
values.put("price", 48.9);
db.insert("Book", null, values);
//事务 已执行成功
db.setTransactionSuccessful();
} catch (Exception e) {
e.printStackTrace();
} finally {
//结束事务
db.endTransaction();
}
上述代码是使用事务的标准用法,首先调用SQLiteDatabaese的.beginTransaction()方法来开启一个事务,然后在异常的代码块中去执行具体的数据库操作,当所有的操作完成之后调用setTransactionSuccessful()方法表示事务已经执行成功,最后在finally里调用endTransaction()方法结束事务.但是我们手动抛出了一个异常,这样添加新数据的代码就执行不到了,不过由于事务的存在,中途出现异常会导致事务失败,此时就数据是删除不掉的!
- SQLite数据存储的基本用法
- Sqlite的基本用法
- Day07-Android中SQLite数据存储,ListView的基本使用
- SQLite 的数据存储
- Android Sqlite的基本用法
- android的SQLite基本用法
- Android数据存储之SQLite简单用法
- 安卓存储基本用法之SQLite存储
- Android的数据存储--SQLite
- Android 的数据存储--SQLite
- SQLite的基本数据操作
- 基本的数据存储
- SQLite在Android上的基本用法
- 关于sqlite的一些基本用法
- Android中SQLite的基本用法
- ios 数据本地存储基本用法
- 存储过程的基本用法
- Chrome SQLite 存储数据的位置
- Scala数组
- 面向过程(C语言)和面向对象(OC语言)
- WPF学习笔记(二)x名称空间
- Harbor介绍及我们的改造
- Java中hashCode的作用
- SQLite数据存储的基本用法
- 《从零开始学Swift》学习笔记(Day 61)——Core Foundation框架之内存管理
- ios 简单模仿随便走的AR功能一
- jsp的九大内置对象和作用域
- js运动框架
- [angular]服务之4$window
- AppCompat 夜间模式中旋转屏幕重启Activiy的bug
- C++调用C文件或者 C函数
- 在Kettle里使用快照实现变化数据捕获(CDC)