android 数据库 bool,Android数据库SQLite基础

1、SQLiteOpenHelper

package com.pas.sqllitehelper;

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 PersonSQLiteOpenHelper extends SQLiteOpenHelper

{

/**

* 数据库构造方法 用来定义数据库的名称 数据库查询的结果集 数据库的版本

* @param context

* @param name

* @param factory

* @param version

*/

public PersonSQLiteOpenHelper(Context context)

{

super(context, "person.db", null, 2);

}

/**

* 数据库首次创建的执行的方法

* @param db 被创建的数据库

*/

@Override

public void onCreate(SQLiteDatabase db)

{

db.execSQL("create table persons (id integer primary key autoincrement," +

"name varchar(20),number varchar(20))");

}

/**

* 当数据库版本号发生变化时候调用

*/

@Override

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

{

Log.i("数据库更新", "数据库更新……");

db.execSQL("alter table persons add account varchar(20)");

}

}

2、Dao类

package com.pas.db.dao;

import java.util.ArrayList;

import java.util.List;

import com.pas.domain.Person;

import com.pas.sqllitehelper.PersonSQLiteOpenHelper;

import android.R.bool;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

public class PersonDao

{

private PersonSQLiteOpenHelper helper;

public PersonDao(Context context)

{

helper = new PersonSQLiteOpenHelper(context);

}

/**

* 传统方式-添加(不推荐)

*

* @param name

* @param number

*/

public void add(String name, String number)

{

SQLiteDatabase db = helper.getWritableDatabase();

String sql = "insert into persons (name,number) values (?,?)";

Object[] para = new Object[]

{ name, number };

db.execSQL(sql, para);

db.close();

}

/**

* 系统API添加

*

* @param name

* @param number

*/

public boolean add_api(String name, String number, long account)

{

SQLiteDatabase db = helper.getWritableDatabase();

ContentValues values = new ContentValues();

values.put("name", name);

values.put("number", number);

values.put("account", account);

/*

* 参数为 表名 null填充列名 插入值的map集合

*     关于第二个参数:

* 当values参数为空或者里面没有内容的时候,

* 我们insert是会失败的(底层数据库不允许插入一个空行),

* 为了防止这种情况,我们要在这里指定一个 列名,

* 到时候如果发现将要插入的行为空行时,

* 就会将你指定的这个列名的值设为null,然后再向数据库中插入

*/

long flag = db.insert("persons", null, values);

db.close();

if (flag == -1)

return false;

return true;

}

/**

* 查询

*

* @param name

*/

public List find(String name)

{

SQLiteDatabase db = helper.getReadableDatabase();

// String sql = "select * from persons where name=?";

// String[] para = new String[]

// { name };

// Cursor res = db.rawQuery(sql, para);

Cursor res = db.query("persons", null, "name=?", new String[]

{ name }, null, null, null);

List persons = new ArrayList();

while (res.moveToNext())

{

Person person = new Person();

person.setId(res.getString(0));

person.setName(res.getString(1));

person.setNumber(res.getString(2));

person.setAccount(res.getString(3));

persons.add(person);

}

res.close();

db.close();

return persons;

}

/**

* 更新

*

* @param name

* @param number

* @return

*/

public int update(String name, String number, String account)

{

SQLiteDatabase db = helper.getReadableDatabase();

ContentValues values = new ContentValues();

values.put("number", number);

values.put("account", account);

int rows = db.update("persons", values, "name=?", new String[]

{ name });

db.close();

return rows;

}

/**

* 删除

*

* @param name

* @return

*/

public int del(String name)

{

SQLiteDatabase db = helper.getReadableDatabase();

int rows = db.delete("persons", "name=?", new String[]

{ name });

db.close();

return rows;

}

/*

* 转账 测试事务

*/

public void transfer(String sourceName, String targetName, double value)

{

SQLiteDatabase db = helper.getWritableDatabase();

//开启事务

db.beginTransaction();

try

{

db.execSQL("update persons set account=account-? where name=?", new Object[]

{ value, sourceName });

db.execSQL("update persons set account=account+? where name=?", new Object[]

{ value, targetName});

//标记数据库事务执行成功

db.setTransactionSuccessful();

} finally

{

db.endTransaction();

}

db.close();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值