您的位置:首页 > 数据库

Sqlite的基本用法

2015-10-07 14:00 337 查看
import java.sql.ResultSet;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.database.sqlite.SQLiteOpenHelper;

public class MyOpenHelper extends SQLiteOpenHelper {

public MyOpenHelper(Context context, String name, CursorFactory factory,

int version) {

super(context, name, factory, version);

// TODO Auto-generated constructor stub

}

//数据库创建时,此方法会调用

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL("create table person(_id integer primary key autoincrement, name char(10), salary char(20), phone integer(20))");

}

//数据库升级时,此方法会调用

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

System.out.println("数据库升级了");

}

}

创建Test测试框架

import android.content.ContentValues;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.test.AndroidTestCase;

public class TestCase extends AndroidTestCase {

//此时测试框架还没有初始化完毕,没有虚拟上下文对象

// private MyOpenHelper oh = new MyOpenHelper(getContext(), "people.db", null, 1);

private MyOpenHelper oh;

private SQLiteDatabase db;

public void test(){

//getContext():获取一个虚拟的上下文

MyOpenHelper oh = new MyOpenHelper(getContext(), "people.db", null, 1);

//如果数据库不存在,先创建数据库,再获取可读可写的数据库对象,如果数据库存在,就直接打开

SQLiteDatabase db = oh.getWritableDatabase();

//如果存储空间满了,那么返回只读数据库对象

// SQLiteDatabase db = oh.getReadableDatabase();

}

//测试框架初始化完毕之后,在测试方法执行之前,此方法调用

@Override

protected void setUp() throws Exception {

super.setUp();

oh = new MyOpenHelper(getContext(), "people.db", null, 1);

db = oh.getWritableDatabase();

}

//测试方法执行完毕之后,此方法调用

@Override

protected void tearDown() throws Exception {

// TODO Auto-generated method stub

super.tearDown();

db.close();

}

public void insert(){

// db.execSQL("insert into person (name, salary, phone)values(?, ?, ?)", new Object[]{"luo[1]", "13000", 138438});

// db.execSQL("insert into person (name, salary, phone)values(?, ?, ?)", new Object[]{"luo", 14000, "13888"});

db.execSQL("insert into person (name, salary, phone)values(?, ?, ?)", new Object[]{"luo", 14000, "13888"});

}

public void delete(){

db.execSQL("delete from person where name = ?", new Object[]{"luo"});

}

public void update(){

db.execSQL("update person set phone = ? where name = ?", new Object[]{186666, "luo"});

}

public void select(){

Cursor cursor = db.rawQuery("select name, salary from person", null);

while(cursor.moveToNext()){

//通过列索引获取列的值

String name = cursor.getString(cursor.getColumnIndex("name"));

String salary = cursor.getString(1);

System.out.println(name + ";" + salary);

}

}

public void insertApi(){

//把要插入的数据全部封装至ContentValues对象

ContentValues values = new ContentValues();

values.put("name", "luo1");

values.put("phone", "15999");

values.put("salary", 16000);

db.insert("person", null, values);

}

public void deleteApi(){

int i = db.delete("person", "name = ? and _id = ?", new String[]{"1111", "3"});

System.out.println(i);

}

public void updateApi(){

ContentValues values = new ContentValues();

values.put("salary", 26000);

int i = db.update("person", values, "name = ?", new String[]{"11111"});

System.out.println(i);

}

public void selectApi(){

Cursor cursor = db.query("person", null, null, null, null, null, null, null);

while(cursor.moveToNext()){

String name = cursor.getString(cursor.getColumnIndex("name"));

String phone = cursor.getString(cursor.getColumnIndex("phone"));

String salary = cursor.getString(cursor.getColumnIndex("salary"));

System.out.println(name + ";" + phone + ";" + salary);

}

}

public void transaction(){

try{

//开启事务

db.beginTransaction();

ContentValues values = new ContentValues();

values.put("salary", 12000);

db.update("person", values, "name = ?", new String[]{"111"});

values.clear();

values.put("salary", 16000);

db.update("person", values, "name = ?", new String[]{"11111"});

int i = 3/0;

//设置 事务执行成功

db.setTransactionSuccessful();

}

finally{

//关闭事务,同时提交,如果已经设置事务执行成功,那么sql语句就生效了,反之,sql语句回滚

db.endTransaction();

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: