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, null, values);
/*
* 插入数据方法二 String
* sql="insert into "+TABLE_NAME+"( "+People.name+" , "+People
* .pwd+" ) values ( 'mxt','mxt')"; sDatabase.execSQL(sql);
*/
cursor = sDatabase.query(TABLE_NAME, null,// columns 要返回的列 select *,
null, // selection 类似where,
null, // selectionArgs,
null, // groupBy,
null, // 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语句中占位符的值,
null, // groupBy 相当于select语句group by关键字后面的部分,
null, // 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(删除条件的数据值))
*/
}