数据库的增删改查


一、---数据库创建---




想要对数据库进行增删改查,首先要创建一个数据库,安卓中的数据库是使用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)");
	}

}




二、---操作类---




定义完了数据库,再就是定义我们使用的往数据库中存数据的函数了,也就是我们通常所指的DAO函数,不过在定义DAO函数之前,先要定义一个bean类,要不想要操作的数据无从而来。如下是bean和DAO。
package com.iigt.bean;

public class InfoBean {

	public  String name;
	public String phone;
}

DAO的代码如下:
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();
	}
}



三、---操作界面---




定义一操作界面来对数据库进行操作,操作界面包括增删改查。
数据库的增删改查_第1张图片
<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>



四、---主函数---




(1)创建一个layout界面,其中包含“增删改查”4个控件。

(2)获取这四个控件,并根据各个控件的ID来判断点击的是哪个事件

(3)此时如果是判断是点击了add事件,就应该增加了,所以需要调用增加函数

(4)需要先创建一个javabean和它的操作类DAO

(5)dao是要向数据库中增加数据,要创建一个数据库并进行初始化

(6)在dao类中定义向数据库中的增删改查方法


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;
		}
	}
}



你可能感兴趣的:(数据库,sqlite,安卓开发)