一:什么是SQLite?
在Android平台上,集成了一个嵌入式关系型轻量级的数据库。
二:什么时候用的数据库?
有大量相似机构的数据需要存储时。
三:如何创建一个数据库?
1.创建一个SqliteOpenHelper的子类
2.添加一个构造方法,用来指定数据库的名称,版本号
3.实现oncreat 方法,数据库第一次创建时被调用,特别适合做数据表的初始化
4.实现onUpgrade方法,当数据库版本升级时被调用,特别适合做表结构的修改。
5.要创建数据库,需要创建一个帮助类的实例对象,并调用其 getReadableDatabase getWritableDatabase 方法
实例代码如下:
MyOpenHelpter.java
public class MyOpenHelpter extends SQLiteOpenHelper {
//添加一个构造方法,用来指定数据库的名称,版本号
public MyOpenHelpter(Context context) {
super(context, "userInfo.db", null, 1);
}
//实现oncreat 方法,数据库第一次创建时被调用,特别适合做数据表的初始化
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table info (_id integer primary key autoincrement,name varchar(20),phone varchar(11))");
}
//实现onUpgrade方法,当数据库版本升级时被调用,特别适合做表结构的修改。
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
MainActivity.java
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建帮助类对象
MyOpenHelpter myOpenHelpter=new MyOpenHelpter(this);
myOpenHelpter.getReadableDatabase();
}
}
getReadableDatabase: 先去获取一个可读可写的数据库对象,如果磁盘空间满了,无法进行写操作,就会以只读的方式打开数据库。
getWritableDatabase: 直接以读写方式打开数据库,如果磁盘空间满,那么就会报错
四:数据库的增删改查方法
4.1:
1.通过创建一个数据帮助类对象可以创建一个数据库(在帮助类的onCreate方法中创建一个info表,有三个字段)
2.通过帮助类对象获取一个数据库操作对象SQlitDatabase(在主类中)
3.通过SqliteDatabase的一个excuteSql()方法可以执行Sql语句,但是这种方式容易写错,没有返回值,我们不知道执行成功没.
五、使用事务操作SQLite数据库
使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果程序执行到endTransaction()之前调用了setTransactionSuccessful() 方法设置事务的标志为成功则提交事务,如果没有调用setTransactionSuccessful() 方法则回滚事务。
银行转账 执行一件事,要么全部成功,要么全部失败
//开启事务
db.beginTransaction();
try {
db.execSQL("update account set money= money-200 where name=?",new String[]{"李四"});
int a = 1/0;//如果执行过程中发现异常 事务会进行回滚
db.execSQL("update account set money= money+200 where name=?",new String[]{"张三"});
//设置事务成功标记
db.setTransactionSuccessful();
} finally {
//事务结束
db.endTransaction();
}