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(刪除條件的數據值))
*/
}