1,对于android的微型数据库,其实要求不是很大,收悉MySql 的应该很容易理解SQList3,无非就是增删查改
2,在工作中应该,创建一个MyDatabase工具类,其继承 SQLiteOpenHelper
下面是工具类代码
package com.qf.day12_sqlite2;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class MyDatabase extends SQLiteOpenHelper {
public MyDatabase(Context context) {
super(context, "mydatabse.db", null, 1);
}
/**
* 第一次连接数据库时执行该方法,通常在该方法中执行建表语句,
* 当数据库创建好以后,则该方法不再执行
*/
@Override
public void onCreate(SQLiteDatabase db) {
// Log.d("print", "------>执行了onCreate");
//创建数据库表的语句
db.execSQL("create table access(_id integer primary key, money)");
}
/**
* 当数据库版本升级的时候执行,
* 通常在该方法中执行数据库某些更新代码或者备份的操作
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Log.d("print", "------>执行了onUpgrade");
}
}
3,在MainActivity里面完成对数据库的操作---处理事务
package com.qf.day12_sqlite2;
import android.os.Bundle;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyDatabase myDatabase = new MyDatabase(this);
//myDatabase.getReadableDatabase() 以读写的方式打开数据库,如果磁盘满了,则更换为只读的方式打开数据库
//myDatabase.getWritableDatabase() 以读写的方式打开数据库,如果磁盘满了,则报错
SQLiteDatabase sqLiteDatabase = myDatabase.getReadableDatabase();
// Cursor cursor = sqLiteDatabase.query(null, null, null, null, null, null, null);
// cursor.close();
//
// //关闭数据库
// myDatabase.close();
// sqLiteDatabase.execSQL("insert into access(money) values('5000')");
// sqLiteDatabase.execSQL("insert into access(money) values('2000')");
//数据库的事务
//1、开启一个事务
sqLiteDatabase.beginTransaction();
try{
sqLiteDatabase.execSQL("update access set money = 1000 where _id = 1");
System.out.println(1/0);
sqLiteDatabase.execSQL("update access set money = 6000 where _id = 2");
//2、在操作的最后把事务标记成功
sqLiteDatabase.setTransactionSuccessful();
}catch(Exception e){
e.printStackTrace();
}finally{
//3、关闭事务 -- 关闭事务时,如果发现没有成功标记,则这一套事务回滚到最初状态
sqLiteDatabase.endTransaction();
}
}
}
增删查改的代码
package com.example.num8_day03_sqlist3;
import android.os.Bundle;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建数据库
SQLiteDatabase openOrCreateDatabase = SQLiteDatabase.openOrCreateDatabase(getFilesDir() + "/mydb.db", null);
//String createtablesql = "create table student(_id integer primary key, name, age, grade)";
//openOrCreateDatabase.execSQL(createtablesql);
//插入记录
// String name = "李磊";
// int age = 10;
// String grade = "二年级";
// String insertsql = "insert into student(name, age, grade) values(?, ?, ?)";
// openOrCreateDatabase.execSQL(insertsql, new Object[] {name, age, grade});
//
//修改记录
// int age = 100;
// String name = "李磊";
// String updatasql = "update student set age = ? where name = ?";
// openOrCreateDatabase.execSQL(updatasql, new Object[]{age, name});
//查询
String querysql = "select * from student";
Cursor cursor = openOrCreateDatabase.rawQuery(querysql, null);
while (cursor.moveToNext()) {
int id = cursor.getInt(2);
String name = cursor.getString(cursor.getColumnIndex("name"));
Log.d("print", "姓名" + id + "惜命" + name);
}
}
}
4,注意事项,
在执行完对数据库的操作以后,要记得关闭数据路,即myDatabae.close();
在执行完查询的操作以后,也要记得对cursor的关闭,即cursor.close();