想要对数据库进行增删改查,首先要创建一个数据库,安卓中的数据库是使用sqlite,我们是通过调用SQLiteOpenHelper类
来进行数据库的创建的和操作的。
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)"); } }
二、---操作类---
package com.iigt.bean; public class InfoBean { public String name; public String phone; }
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(); } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 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" > <Button android:id="@+id/bt_add" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/add" /> <Button android:id="@+id/bt_del" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/del" /> <Button android:id="@+id/bt_update" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/update" /> <Button android:id="@+id/bt_query" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/query" /> </LinearLayout>
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; } } }