SQLite資料庫存儲(下) 1.增添數據 對於添加數據的話我們只需要在主活動當中import新的包以及在主活動當中寫上適當的代碼就可以了,不需要在我們之前創建新的類當中書寫新的代碼。現在的主活動代碼如下: 這樣我們就分別向book表以及category表當中增添了數據了。當然我們也可以在這段代碼當 ...
SQLite資料庫存儲(下)
1.增添數據
對於添加數據的話我們只需要在主活動當中import新的包以及在主活動當中寫上適當的代碼就可以了,不需要在我們之前創建新的類當中書寫新的代碼。現在的主活動代碼如下:
package com.example.lenovo.studyittwo; import android.content.IntentFilter; import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.content.*; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private MyDatabaseHelper dbHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 構建MyDatabaseHelper對象,指定資料庫名為"BookStore.db、版本號為1,版本號改為2之後則會直接 dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 2); Button btn_create_database = (Button) findViewById(R.id.creat); btn_create_database.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 創建或打開一個現有的資料庫(已存在則打開,否則創建一個新的) dbHelper.getWritableDatabase(); } }); Button addData= (Button)findViewById(R.id.add); addData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { SQLiteDatabase db=dbHelper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("name","the fuck code"); values.put("autuor","fuckers"); db.insert("Book",null,values); values.clear(); values.put("name","the fuck code"); values.put("autuor","fuckers"); db.insert("Category",null,values); values.clear(); } }); }}
這樣我們就分別向book表以及category表當中增添了數據了。當然我們也可以在這段代碼當中看到我們新建了一個按鈕,用於演示我們數據是否已經插入成功,下麵是我們新的主活動界面的代碼:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/creat" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Create database"/> <Button android:id="@+id/add" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Add data"/> </LinearLayout>
很自然地運用了一個線性的垂直佈局,只是增加了一個button而已。
2.更改數據
為了方便研究更改數據,我們在佈局下加入更改數據的按鈕,代碼如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/creat" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Create database"/> <Button android:id="@+id/add" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Add data"/> <Button android:id="@+id/updata" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Updata data"/> </LinearLayout>
這裡上主活動的代碼,我們只是在第三個按鈕處將代碼做了適當的添加,這樣就可以進行數據的更改了:
package com.example.lenovo.studyittwo; import android.content.IntentFilter; import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.content.*; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private MyDatabaseHelper dbHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 構建MyDatabaseHelper對象,指定資料庫名為"BookStore.db、版本號為1,版本號改為2之後則會直接 dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 2); Button btn_create_database = (Button) findViewById(R.id.creat); btn_create_database.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 創建或打開一個現有的資料庫(已存在則打開,否則創建一個新的) dbHelper.getWritableDatabase(); } }); Button addData= (Button)findViewById(R.id.add); addData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { SQLiteDatabase db=dbHelper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("name","the fuck code"); values.put("autuor","fuckers"); db.insert("Book",null,values); values.clear(); values.put("name","the fuck code"); values.put("autuor","fuckers"); db.insert("Category",null,values); values.clear(); } }); Button updataData= (Button)findViewById(R.id.updata); updataData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { SQLiteDatabase db=dbHelper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("name","我是傻逼\n"); db.update("Book",values,"name=?",new String[]{"the fuck code"}); } }); }}
3.刪除數據
還是同樣的套路,我們直接在主界面上加入第四個刪除數據的按鈕:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/creat" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Create database"/> <Button android:id="@+id/add" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Add data"/> <Button android:id="@+id/updata" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Updata data"/> <Button android:id="@+id/deletedata" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Delete data"/> </LinearLayout>
然後寫入主活動的代碼:
package com.example.lenovo.studyittwo; import android.content.IntentFilter; import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.content.*; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private MyDatabaseHelper dbHelper; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 構建MyDatabaseHelper對象,指定資料庫名為"BookStore.db、版本號為1,版本號改為2之後則會直接 dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 2); Button btn_create_database = (Button) findViewById(R.id.creat); btn_create_database.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 創建或打開一個現有的資料庫(已存在則打開,否則創建一個新的) dbHelper.getWritableDatabase(); } }); Button addData= (Button)findViewById(R.id.add); addData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { SQLiteDatabase db=dbHelper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("name","the fuck code"); values.put("autuor","fuckers"); db.insert("Book",null,values); values.clear(); values.put("name","the fuck code"); values.put("autuor","fuckers"); db.insert("Category",null,values); values.clear(); } }); Button updataData= (Button)findViewById(R.id.updata); updataData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { SQLiteDatabase db=dbHelper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("name","我是傻逼\n"); db.update("Book",values,"name=?",new String[]{"the fuck code"});//如果名字等於這個就可以進行更新了 } }); Button deleteData= (Button)findViewById(R.id.deletedata); deleteData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { SQLiteDatabase db=dbHelper.getWritableDatabase(); ContentValues values=new ContentValues(); values.put("name","我是傻逼\n"); db.delete("Book","name=?",new String[]{"the fuck code"});//如果名字等於這個就可以直接刪除了 } }); }}
4.查詢數據
在咱們的安卓開發當中的SQLiteDatabase類當中還提供了一個query()方法對於數據進行查詢,這個方法非常複雜,最短的一個方法重載也需要傳入7個參數。
主界面:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/creat" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Create database"/> <Button android:id="@+id/add" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Add data"/> <Button android:id="@+id/updata" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Updata data"/> <Button android:id="@+id/deletedata" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Delete data"/> </LinearLayout>
主活動的查詢代碼如下:
private void queryStudents() { // 相當於 select * from students 語句 Cursor cursor = mSQLiteDatabase.query(SQLiteDbHelper.TABLE_STUDENT, null, "cls_id > ? and id >= 1", new String[]{"3"}, null, null, null, null); // 不斷移動游標獲取值 while (cursor.moveToNext()) { // 直接通過索引獲取欄位值 int stuId = cursor.getInt(0); // 先獲取 name 的索引值,然後再通過索引獲取欄位值 String stuName = cursor.getString(cursor.getColumnIndex("name")); Log.e("", "id: " + stuId + " name: " + stuName); } // 關閉游標 cursor.close(); }
最後我們利用adb工具就可以查看到我們是否成功進行資料庫操作啦!!