SQLite

SQLite

爲什麼要用SQLite

  • 當數據量大、結構複雜,使用ShareFreferences和文件存儲相當複雜,容易出錯,效率低下。而使用SQLite就比較簡單。

什麼是SQLite

  • SQLite是專爲嵌入式設備設計的一款輕量級數據庫,SQLite數據庫存儲是Android系統提供的數據存儲方式之一。

如何創建數據庫和數據表

  • 新建類繼承SQLiteOpenHelper;
    實現構造方法,重寫onCreate、onUpgrade方法;
    實例化SQLiteOpenHelper的子類對象;
    調用getReadableDatabase或getWritableDatabase方法
    以下代碼展示:
    創建類繼承SQLiteOpenHelper,並寫出數據庫
public class Sql extends SQLiteOpenHelper {
    String sql = "create table student(" + "id integer primary Key autoincrement not null," + "name text," + "age integer" + ")";

    public Sql(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);

    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

.在xml文件中佈局

 <EditText
        android:id="@+id/sqltest_ed"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/sqltest_ed2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/sqltest_bt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="保存信息" />

    <Button
        android:id="@+id/sqltest_bt2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="列出信息" />

    <Button
        android:id="@+id/sqltest_ed3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="修改信息" />

    <Button
        android:id="@+id/sqltest_ed4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="刪除信息" />

SQLActivity文件代碼

public class SqltestActivity extends AppCompatActivity implements View.OnClickListener {
    private static final String TAG = "SqltestActivity";
    EditText sql_ed, sql_ed2;
    Button sql_bt, sql_bt2, sql_bt3, sql_bt4;

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

    }

    private void deleteStudent() {
        String name = sql_ed.getText().toString();
        String age = sql_ed2.getText().toString();
        Sql sql = new Sql(this, "student_db", null, 1);
        SQLiteDatabase sqLiteDatabase = sql.getWritableDatabase();
        sqLiteDatabase.delete("student", "name=?", new String[]{name});
    }

    private void modifyStudnt() {
        String name = sql_ed.getText().toString();
        String age = sql_ed2.getText().toString();
        Sql sql = new Sql(this, "student_db", null, 1);
        SQLiteDatabase sqLiteDatabase = sql.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("name", "FFF");
        sqLiteDatabase.update("student", values, "name=? and age=?", new String[]{name, age + ""});
    }

    private void liststudents() {
        Sql sql = new Sql(this, "student_db", null, 1);
        SQLiteDatabase sqLiteDatabase = sql.getWritableDatabase();
        Cursor cursor = sqLiteDatabase.query("student", null, null, null, null, null, null);
        cursor.moveToFirst();
        do {
            String name = cursor.getString(2);
            int id = cursor.getInt(cursor.getColumnIndex("id"));
            int age = cursor.getInt(cursor.getColumnIndex("age"));
            Log.e(TAG, "liststudents: :" + id + "-" + name + "-" + age);
        } while (cursor.moveToNext());


    }

    private void addstudent() {
        String name = sql_ed.getText().toString();
        int age = Integer.parseInt(sql_ed2.getText().toString());

        ContentValues values = new ContentValues();
        values.put("name", name);
        values.put("age", age);
        Sql sql = new Sql(this, "student_db", null, 1);
        SQLiteDatabase sqLiteDatabase = sql.getWritableDatabase();
        sqLiteDatabase.insert("student", null, values);
    }

    private void binID() {
        sql_ed = findViewById(R.id.sqltest_ed);
        sql_ed2 = findViewById(R.id.sqltest_ed2);
        sql_bt = findViewById(R.id.sqltest_bt);
        sql_bt2 = findViewById(R.id.sqltest_bt2);
        sql_bt3 = findViewById(R.id.sqltest_ed3);
        sql_bt4 = findViewById(R.id.sqltest_ed4);
        sql_bt.setOnClickListener(this);
        sql_bt2.setOnClickListener(this);
        sql_bt3.setOnClickListener(this);
        sql_bt4.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.sqltest_bt:
                addstudent();
                break;
            case R.id.sqltest_bt2:
                liststudents();
                break;
            case R.id.sqltest_ed3:
                modifyStudnt();
                break;
            case R.id.sqltest_ed4:
                deleteStudent();
                break;
        }
    }


}

如何添加數據

  private void addstudent() {
        String name = sql_ed.getText().toString();
        int age = Integer.parseInt(sql_ed2.getText().toString());

        ContentValues values = new ContentValues();
        values.put("name", name);
        values.put("age", age);
        Sql sql = new Sql(this, "student_db", null, 1);
        SQLiteDatabase sqLiteDatabase = sql.getWritableDatabase();
        sqLiteDatabase.insert("student", null, values);
    }

如何刪除數據

 private void deleteStudent() {
        String name = sql_ed.getText().toString();
        String age = sql_ed2.getText().toString();
        Sql sql = new Sql(this, "student_db", null, 1);
        SQLiteDatabase sqLiteDatabase = sql.getWritableDatabase();
        sqLiteDatabase.delete("student", "name=?", new String[]{name});
    }

如何修改數據

 private void modifyStudnt() {
        String name = sql_ed.getText().toString();
        String age = sql_ed2.getText().toString();
        Sql sql = new Sql(this, "student_db", null, 1);
        SQLiteDatabase sqLiteDatabase = sql.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("name", "FFF");
        sqLiteDatabase.update("student", values, "name=? and age=?", new String[]{name, age + ""});
    }

如何查詢數據

private void liststudents() {
        Sql sql = new Sql(this, "student_db", null, 1);
        SQLiteDatabase sqLiteDatabase = sql.getWritableDatabase();
        Cursor cursor = sqLiteDatabase.query("student", null, null, null, null, null, null);
        cursor.moveToFirst();
        do {
            String name = cursor.getString(2);
            int id = cursor.getInt(cursor.getColumnIndex("id"));
            int age = cursor.getInt(cursor.getColumnIndex("age"));
            Log.e(TAG, "liststudents: :" + id + "-" + name + "-" + age);
        } while (cursor.moveToNext());


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