Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android -SQLite數據庫存儲

Android -SQLite數據庫存儲

編輯:關於Android編程

android 系統集成了一個輕量級的數據庫,SQLite只是一個嵌入式的數據庫引擎;android提供SQLiteDatabase代表一個數據庫,一旦應用程序獲得了SQLiteDatabase對象,接下來就可以通過SQLiteDatabase對象來操作管理數據了,下面分別就創建數據庫以及增刪改查給出例子;
數據庫創建的位置如下
這裡寫圖片描述vcGsvdOho8q1z9bByzK49re9t6g6b25DcmVhdGW6zW9uVXBncmFkZaGjtdrSu7TOu/G1w7bUyv2+3b/itcS2wbvy0LSy2df3tcTKsbrytffTw29uQ3JlYXRlLMv50tTV4sDvw+bQtLS0vajK/b7dse21xNPvvuQ71NrK/b7dv+Kw5rG+seS7r7XEyrG68rvhtffTw29uVXBncmFkZSzL+dLUyOe5+7HtveG5ubHku6/By77N1NrV4sDv0N64xKGjILT6wuu94bm5yOfNvMG9uPZKYXZhzsS8/iAhW9XiwO/QtM28xqzD6Mr2XShodHRwOi8vaW1nLmJsb2cuY3Nkbi5uZXQvMjAxNTA5MDgxODUxNDI4MDApICZndDtUZXN0U1FMaXRlT3BlbkhlbHBlcjwvcD4NCjxwcmUgY2xhc3M9"brush:java;"> public class TestSQLiteOpenHelper extends SQLiteOpenHelper{ public TestSQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } public TestSQLiteOpenHelper(Context context, String name) { this(context, name, null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(create table if not exists user(id Integer primary key autoincrement,name varchar(20),password varchar(20))); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }

創建數據庫

getWritableDatabase()和getReadableDatabase()方法都可以獲取一個用於操作數據庫的SQLiteDatabase實例。 但getWritableDatabase()方法以讀寫方式打開數據庫,一旦數據庫的磁盤空間滿了,數據庫就只能讀而不能寫, getWritableDatabase()打開數據庫就會出錯。getReadableDatabase()方法先以讀寫方式打開數據庫, 倘若使用如果數據庫的磁盤空間滿了,就會打開失敗,當打開失敗後會繼續嘗試以只讀方式打開數據庫.

 //四個參數,第一個上下文,2表的名字,34都已經在構造函數中固定了,為 null和1
      TestSQLiteOpenHelper Helper=new TestSQLiteOpenHelper(getApplicationContext(),MY_FIRST_DB.db);
      SQLiteDatabase   database=Helper.getWritableDatabase();//獲取一個用於操作數據庫的SQLiteDatabase實例

增加數據

  /**
     * 增加數據
     */
    private void insertDatabase() {
        ContentValues values=new ContentValues();
        values.put(name,username.getText().toString());
        values.put(password,password.getText().toString());
        //兩種方式插入數據庫
        // database.execSQL();
        database.insert(user,null,values);
    }

刪除數據


 /**
     * 刪除數據
     */
    private void deleteDatabase() {
        database.delete(user,name=?,new String[]{zhangsan});
    }

更改數據

/**
     * 更改數據
     */
    private void updataDatabase() {
        ContentValues values1=new ContentValues();
        values1.put(password,abcd);

        database.update(user,values1,name=?,new String[]{zhangsan});
    }

查詢數據

 /**
     * 查詢數據
     */
    private void select() {
        //兩種數據庫查詢方式
        //根據id倒序排列;offset忽略前兩個,且只查詢兩條數據,後面為數量。前面為忽略數
        Cursor cursor=database.query(user,null,null,null,null,null,id DESC,2,1);

        //根據id倒序排列;offset忽略前兩個,且只查詢兩條數據,
       // Cursor cursor=database.rawQuery(select * from user ORDER BY id DESC LIMIT 2   OFFSET 2,null);
        cursor.moveToFirst();
        while (!cursor.isAfterLast()){
            //getString 需要傳入ColumnIndex類型的參數,
            // 也就是第幾個記錄,可以先查詢name的ColumnIndex數值傳入
            String name=cursor.getString(cursor.getColumnIndex(name));
            String password=cursor.getString(cursor.getColumnIndex(password));

            Log.d(curser, 用戶名 + name + 密碼 + password);
            cursor.moveToNext();

        }
    }

界面很簡單如下
這裡寫圖片描述

下面給出主程序源碼

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button button_creatdb;
    private Button button_insert;
    private Button button_delete;
    private Button button_update;
    private Button button_select;
    private SQLiteDatabase database;
    private EditText username;
    private EditText password;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        username= (EditText) findViewById(R.id.edittext_username);
        password= (EditText) findViewById(R.id.edittext_password);

        button_creatdb= (Button) findViewById(R.id.button1);
        button_insert= (Button) findViewById(R.id.button2);
        button_delete = (Button) findViewById(R.id.button3);
        button_update= (Button) findViewById(R.id.button4);
        button_select= (Button) findViewById(R.id.button5);
        button_select.setOnClickListener(this);
        button_update.setOnClickListener(this);
        button_delete.setOnClickListener(this);
        button_creatdb.setOnClickListener(this);
        button_insert.setOnClickListener(this);



        //四個參數,第一個上下文,2表的名字,34都已經在構造函數中固定了,為 null和1
        TestSQLiteOpenHelper Helper=new TestSQLiteOpenHelper(getApplicationContext(),MY_FIRST_DB.db);
        //    getWritableDatabase()和getReadableDatabase()方法都可以獲取一個用於操作數據庫的SQLiteDatabase實例。
        //    但getWritableDatabase()方法以讀寫方式打開數據庫,一旦數據庫的磁盤空間滿了,數據庫就只能讀而不能寫,
        //    getWritableDatabase()打開數據庫就會出錯。getReadableDatabase()方法先以讀寫方式打開數據庫,
        //    倘若使用如果數據庫的磁盤空間滿了,就會打開失敗,當打開失敗後會繼續嘗試以只讀方式打開數據庫.

        database=Helper.getWritableDatabase();//獲取一個用於操作數據庫的SQLiteDatabase實例
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){


            case R.id.button1:
                Toast.makeText(getApplicationContext(),已創建數據庫,Toast.LENGTH_LONG).show();
                break;
            case R.id.button2:
                insertDatabase();
                break;
            case R.id.button3:
                deleteDatabase();
                break;
            case R.id.button4:
                updataDatabase();
                break;
            case R.id.button5:
                select();
                break;
            default:
                break;
        }

    }

    /**
     * 查詢數據
     */
    private void select() {
        //兩種數據庫查詢方式
        //根據id倒序排列;offset忽略前兩個,且只查詢兩條數據,後面為數量。前面為忽略數
        Cursor cursor=database.query(user,null,null,null,null,null,id DESC,2,1);

        //根據id倒序排列;offset忽略前兩個,且只查詢兩條數據,
       // Cursor cursor=database.rawQuery(select * from user ORDER BY id DESC LIMIT 2   OFFSET 2,null);
        cursor.moveToFirst();
        while (!cursor.isAfterLast()){
            //getString 需要傳入ColumnIndex類型的參數,
            // 也就是第幾個記錄,可以先查詢name的ColumnIndex數值傳入
            String name=cursor.getString(cursor.getColumnIndex(name));
            String password=cursor.getString(cursor.getColumnIndex(password));

            Log.d(curser, 用戶名 + name + 密碼 + password);
            cursor.moveToNext();

        }
    }

    /**
     * 刪除數據
     */
    private void deleteDatabase() {
        database.delete(user,name=?,new String[]{zhangsan});
    }
    /**
     * 更改數據
     */
    private void updataDatabase() {
        ContentValues values1=new ContentValues();
        values1.put(password,abcd);

        database.update(user,values1,name=?,new String[]{zhangsan});
    }
    /**
     * 增加數據
     */
    private void insertDatabase() {
        ContentValues values=new ContentValues();
        values.put(name,username.getText().toString());
        values.put(password,password.getText().toString());
        //兩種方式插入數據庫
        // database.execSQL();
        database.insert(user,null,values);
    }
}

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved