SQLite---T_double

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

     */

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章