关闭

Android SQList3,数据库的基本操作,增删查改

标签: androidsqlist3事务处理
72人阅读 评论(0) 收藏 举报
分类:

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();



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:121次
    • 积分:21
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档