你好 我們也是要用MY SQL實現資料庫的增刪改查
- 2023-01-01
一、——-資料庫建立——-
想要對資料庫進行增刪改查,首先要建立一個數據庫,安卓中的資料庫是使用sqlite,我們是透過呼叫SQLiteOpenHelper類來進行資料庫的建立的和操作的。
[java] view plain copy print?在CODE上檢視程式碼片派生到我的程式碼片package com。iigt。crud;
import android。content。Context;
import android。database。sqlite。SQLiteDatabase;import android。database。sqlite。SQLiteOpenHelper;public class MySqlite extends SQLiteOpenHelper {public MySqlite(Context context) {
//context :上下文 , name:資料庫檔案的名稱 factory:用來建立cursor物件,預設為null//version:資料庫的版本號,從1開始,如果發生改變,onUpgrade方法將會呼叫,4。0之後只能升不能將super(context, “info。db”, null,1);
}
//oncreate方法是資料庫第一次建立的時候會被呼叫; 特別適合做表結構的初始化,需要執行sql語句;SQLiteDatabase db可以用來執行sql語句@Override
public void onCreate(SQLiteDatabase db) {//透過SQLiteDatabase執行一個建立表的sql語句db。execSQL(“create table info (_id integer primary key autoincrement,name varchar(20),phone varchar(11))”);}
//onUpgrade資料庫版本號發生改變時才會執行; 特別適合做表結構的修改@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//新增一個phone欄位
//db。execSQL(“alter table info add phone varchar(11)”);}
}
二、——-操作類——-
定義完了資料庫,再就是定義我們使用的往資料庫中存資料的函數了,也就是我們通常所指的DAO函式,不過在定義DAO函式之前,先要定義一個bean類,要不想要操作的資料無從而來。如下是bean和DAO。
[java] view plain copy print?在CODE上檢視程式碼片派生到我的程式碼片package com。iigt。bean;
public class InfoBean {
public String name;
public String phone;
}
DAO的程式碼如下:
[java] view plain copy print?在CODE上檢視程式碼片派生到我的程式碼片package com。iigt。dao;
import android。content。Context;
import android。database。Cursor;
import android。database。sqlite。SQLiteDatabase;import com。iigt。bean。InfoBean;
import com。iigt。crud。MySqlite;
public class InfoDao {
private MySqlite mySqliteOpenHelper;
public InfoDao(Context context){
//建立一個幫助類物件
mySqliteOpenHelper = new MySqlite(context);}
public void add(InfoBean bean){
//呼叫getReadableDatabase方法,來初始化資料庫的建立SQLiteDatabase db = mySqliteOpenHelper。getWritableDatabase();//sql:sql語句, bindArgs:sql語句中佔位符的值db。execSQL(“insert into info(name,phone) values(?,?);”, new Object[]{bean。name,bean。phone});//關閉資料庫物件
db。close();
}
public void del(String name){
SQLiteDatabase db = mySqliteOpenHelper。getReadableDatabase();db。execSQL(“delete from info where name=?;”, new Object[]{name});db。close();
}
public void update(InfoBean bean){
SQLiteDatabase db = mySqliteOpenHelper。getReadableDatabase();db。execSQL(“update info set phone=? where name=?;”, new Object[]{bean。phone,bean。name});db。close();
}
public void query(String name){
//執行sql語句需要sqliteDatabase物件
//呼叫getReadableDatabase方法,來初始化資料庫的建立SQLiteDatabase db = mySqliteOpenHelper。getReadableDatabase();//sql:sql語句, selectionArgs:查詢條件佔位符的值,返回一個cursor物件Cursor cursor = db。rawQuery(“select _id, name,phone from info where name = ?;”, new String []{name});//解析Cursor中的資料
if(cursor != null && cursor。getCount() >0){//判斷cursor中是否存在資料//迴圈遍歷結果集,獲取每一行的內容
while(cursor。moveToNext()){//條件,遊標能否定位到下一行//獲取資料
int id = cursor。getInt(0);
String name_str = cursor。getString(1);
String phone = cursor。getString(2);
System。out。println(“_id:”+id+“;name:”+name_str+“;phone:”+phone);}
cursor。close();//關閉結果集
}
//關閉資料庫物件
db。close();
}
}
三、——-操作介面——-
定義一操作介面來對資料庫進行操作,操作介面包括增刪改查。
[html] view plain copy print?在CODE上檢視程式碼片派生到我的程式碼片 android:layout_height=“match_parent” android:paddingBottom=“@dimen/activity_vertical_margin”android:paddingLeft=“@dimen/activity_horizontal_margin”android:paddingRight=“@dimen/activity_horizontal_margin”android:paddingTop=“@dimen/activity_vertical_margin”android:orientation=“vertical” tools:context=“。MainActivity” >
四、——-主函式——-
(1)建立一個layout介面,其中包含“增刪改查”4個控制元件。
(2)獲取這四個控制元件,並根據各個控制元件的ID來判斷點選的是哪個事件(3)此時如果是判斷是點選了add事件,就應該增加了,所以需要呼叫增加函式(4)需要先建立一個javabean和它的操作類DAO(5)dao是要向資料庫中增加資料,要建立一個數據庫並進行初始化(6)在dao類中定義向資料庫中的增刪改查方法[java] view plain copy print?在CODE上檢視程式碼片派生到我的程式碼片package com。iigt。crud;
import android。app。Activity;
import android。content。Context;
import android。database。sqlite。SQLiteDatabase;import android。os。Bundle;
import android。view。View;
import android。view。View。OnClickListener;import com。iigt。bean。InfoBean;
import com。iigt。dao。InfoDao;
import com。iigt。adddeldatabase。*;
public class MainActivity extends Activity implements OnClickListener {private Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {super。onCreate(savedInstanceState);
setContentView(R。layout。activity_main);
mContext = this;
//建立一個幫助類物件
MySqlite mySqliteOpenHelper = new MySqlite(mContext);//呼叫getReadableDatabase方法,來初始化資料庫的建立SQLiteDatabase db = mySqliteOpenHelper。getReadableDatabase();//找到相應控制元件
findViewById(R。id。bt_add)。setOnClickListener(this);findViewById(R。id。bt_del)。setOnClickListener(this);findViewById(R。id。bt_update)。setOnClickListener(this);findViewById(R。id。bt_query)。setOnClickListener(this);}
@Override
public void onClick(View v) {
InfoDao infoDao = new InfoDao(mContext);//建立一個dao物件做增刪改查switch (v。getId()) {
case R。id。bt_add:
InfoBean bean = new InfoBean();
bean。name = “張三”;
bean。phone =“110”;
infoDao。add(bean);
InfoBean bean1 = new InfoBean();
bean1。name = “李四”;
bean1。phone =“120”;
infoDao。add(bean1);
break;
case R。id。bt_del:
infoDao。del(“張三”);
infoDao。del(“李四”);
break;
case R。id。bt_update:
InfoBean bean2 = new InfoBean();
bean2。name = “張三”;
bean2。phone =“119”;
infoDao。update(bean2);
break;
case R。id。bt_query:
infoDao。query(“張三”);
infoDao。query(“李四”);
break;
default:
break;
}
}
}