Android数据库的增删改查(方式1)

昨天总结了在android下数据的创建今天来总结一下在android下数据库的增删改查的操作

步骤:

1:我的工程目录结构如下图


2:创建一个类继承SQLiteOpenHelper并重写里面的onCreate和onUpgrade这两个方法代码如下

package cn.wxz.crud;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MySqliteOpenHelper extends SQLiteOpenHelper {

	public MySqliteOpenHelper(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(40),phone varchar(20))");
	}

	//onUpgrade数据库版本号发生改变时才会执行; 特别适合做表结构的修改
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		//添加一个phone字段
//		db.execSQL("alter table info add phone varchar(11)");
	}

}

3:创建一个javaBean对象代码如下

package cn.wxz.crud.bean;

public class InfoBean {

	public  String name;
	public String phone;
}

4:创建一个sqlite帮助类,这里面是增删改查的方法,代码如下

package cn.wxz.crud.dao;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import cn.wxz.crud.MySqliteOpenHelper;
import cn.wxz.crud.bean.InfoBean;


public class InfoDao {


	private MySqliteOpenHelper mySqliteOpenHelper;
	public InfoDao(Context context){
		//创建一个帮助类对象
		mySqliteOpenHelper = new MySqliteOpenHelper(context);

		
	}

	public void add(InfoBean bean){

		//执行sql语句需要sqliteDatabase对象
		//调用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){


		//执行sql语句需要sqliteDatabase对象
		//调用getReadableDatabase方法,来初始化数据库的创建
		SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase();
		//sql:sql语句,  bindArgs:sql语句中占位符的值
		db.execSQL("delete from info where name=?;", new Object[]{name});
		//关闭数据库对象
		db.close();

	}
	public void update(InfoBean bean){

		//执行sql语句需要sqliteDatabase对象
		//调用getReadableDatabase方法,来初始化数据库的创建
		SQLiteDatabase db = mySqliteOpenHelper.getReadableDatabase();
		//sql:sql语句,  bindArgs:sql语句中占位符的值
		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();

	}
}

5:设计页面布局,activity_main的代码如下

<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>
6: MainActivity中的代码如下 

package cn.wxz.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 cn.wxz.crud.bean.InfoBean;
import cn.wxz.crud.dao.InfoDao;
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;
		//创建一个帮助类对象
		MySqliteOpenHelper mySqliteOpenHelper = new MySqliteOpenHelper(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("张三");
			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;
		}

	}
}
7:启动工程看数据库是否成功创建  DDMS->data->data-> com.example.createsqlite(这个是你项目的包名)->databases可以查看到
8:
把数据库导到桌面



9:
使用 SQLiteExpertPers工具类(下载地址:http://pan.baidu.com/s/1dFKLlML)打开数据库查看,如下



10:应用主页面如下图点击add重新导出数据库查看



11:重复上面的步骤依次可以检验其他三个方法,这里我就不再一一验证了


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中进行数据库增删改查,需要使用 SQLite 数据库。SQLite 是一款轻量级的关系型数据库,在 Android 中内置了 SQLite 数据库引擎,可以通过 Android SDK 提供的 API 进行数据库的操作。 以下是一个简单的示例代码,演示如何在 Android 中进行数据库增删改查: 1. 创建数据库 首先需要创建一个 DBHelper 类,用于创建数据库以及数据表。以下是一个示例代码: ```java public class DBHelper extends SQLiteOpenHelper { private static final String DB_NAME = "my_db"; private static final int DB_VERSION = 1; public DBHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String sql = "CREATE TABLE IF NOT EXISTS student (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { String sql = "DROP TABLE IF EXISTS student"; db.execSQL(sql); onCreate(db); } } ``` 2. 插入数据 使用 ContentValues 类来组装数据,然后调用 insert() 方法将数据插入到数据库中。以下是一个示例代码: ```java ContentValues values = new ContentValues(); values.put("name", "张三"); values.put("age", 20); db.insert("student", null, values); ``` 3. 查询数据 使用 query() 方法来查询数据库中的数据。以下是一个示例代码: ```java Cursor cursor = db.query("student", null, null, null, null, null, null); while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("_id")); String name = cursor.getString(cursor.getColumnIndex("name")); int age = cursor.getInt(cursor.getColumnIndex("age")); Log.i("TAG", "id: " + id + ", name: " + name + ", age: " + age); } cursor.close(); ``` 4. 更新数据 使用 update() 方法来更新数据库中的数据。以下是一个示例代码: ```java ContentValues values = new ContentValues(); values.put("age", 21); db.update("student", values, "name = ?", new String[]{"张三"}); ``` 5. 删除数据 使用 delete() 方法来删除数据库中的数据。以下是一个示例代码: ```java db.delete("student", "name = ?", new String[]{"张三"}); ``` 以上就是在 Android 中进行数据库增删改查的简单示例代码。需要注意的是,数据库操作需要在子线程中进行,不能在主线程中进行,否则会影响应用的性能和响应速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值