import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.sqliteDatabase;
import android.database.sqlite.sqliteOpenHelper;
public class DB {
// 数据库相关数据
private static final String DATABASE_NAME = "DB.db";// 定义数据库名
private static final int DATABASE_VERSION = 1;// 数据版本,如果构造器调用的版本比之前创建的高此类自动调用onUpgrade
private static final String TABLE_NAME = "PEOPLE"; // 定义数据库表名
private Context context;// 定义上下文
private sqliteHelper helper;// 继承于抽象类sqliteOpenHelper
private sqliteDatabase sDatabase;// 该类封装了一些操作数据库的API,使用该类可以完成对数据进行增删改查
private Cursor cursor;
public DB(Context ct) {
this.context = ct;
}
/*
* sqliteOpenHelper是一个抽象类,来管理数据库的创建和版本的管理。
* 要使用它必须实现它的onCreate(sqliteDatabase),onUpgrade(sqliteDatabase,int,int)方法
* onCreate:当数据库第一次被建立的时候被执行,例如创建表,初始化数据等。
* onUpgrade:当数据库需要被更新的时候执行,例如删除旧表,创建新表。
*/
public class sqliteHelper extends sqliteOpenHelper {
public sqliteHelper(Context context) {
super(context,DATABASE_NAME,null,DATABASE_VERSION);
}
@Override
public void onCreate(sqliteDatabase db) {
// 创建表名为PEOPLE的数据表
final String P_table = "CREATE TABLE " +TABLE_NAME + " ( "
+ People.id + " integer primary key autoincrement,"
+ People.name + " text not null," + People.pwd
+ " text not null);";
db.execsql(P_table);
}
// 如果构造器的本本比之前创建的高,就自动调用onUpgrade的方法
@Override
public void onUpgrade(sqliteDatabase db, int oldVersion,int newVersion) {
String upgrade = "DORP TABLE IF EXIST " + DATABASE_NAME;
db.execsql(upgrade);
onCreate(db);
}
}
// ******************sqliteHelper类结束**************************
/**
* 建立数据库连接
*/
public void Open() {
helper = new sqliteHelper(this.context);
}
/**
*/
public void Close(sqliteDatabase sDatabase) {
if (cursor != null) {
cursor.close();
}
if (helper != null) {
helper.close();
}
}
/**
*
* @param name
* @param pwd
* @return
*/
public int addPeople(String name,String pwd) {
String sort = "id desc";// 定义按照id降序
int count = 0;
Open();
sDatabase = helper.getWritableDatabase();
// 插入数据方法一
ContentValues values = new ContentValues();
values.put(People.name,name);
values.put(People.pwd,pwd);
sDatabase.insert(TABLE_NAME,values);
/*
* 插入数据方法二 String
* sql="insert into "+TABLE_NAME+"( "+People.name+","+People
* .pwd+" ) values ( 'mxt','mxt')"; sDatabase.execsql(sql);
*/
cursor = sDatabase.query(TABLE_NAME,// columns 要返回的列 select *,
null,// selection 类似where,// selectionArgs,// groupBy,// having,
sort); // sort
count = cursor.getCount();
Close(sDatabase);
return count;
}
/**
* 判断用户名是否存在(登陆)
*
* @param name
* @param pwd
* @return
*/
public boolean login(String name,String pwd) {
boolean flag = false;
Open();
sDatabase = helper.getReadableDatabase();
String columns[] = { People.name };
String sql = People.name + " ='" + name + "' AND " + People.pwd + " ='"
+ pwd + "'";
cursor = sDatabase.query(TABLE_NAME,// 表名
columns,// columns 要查询出来的列名,
sql,// selection
// 查询条件子句,相当于select语句where关键字后面的部分,在条件子句允许使用占位符“?”
null,// selectionArgs 对应于selection语句中占位符的值,// groupBy 相当于select语句group by关键字后面的部分,// having 相当于select语句having关键字后面的部分,
null); // sort 相当于排序
if (cursor.moveToFirst()) {
flag = true;
}
Close(sDatabase);
return flag;
}
/*
* sDatabase.update(表名,values(更改后的数据),whereClause(更改的条件),
* whereArgs(更改的条件值)) sDatabase.insert(表名,nullColumnHack,values(要插入的数据))
* sDatabase.delete(表名,whereClause(删除的条件),whereArgs(删除条件的数据值))
*/
}