Android学习之SQLite学习

花了2天时间,系统学习了下Android开发过程中使用的轻量级数据库SQLite的使用。并掌握其增,删,该,查的基本数据库操作。

首先要使用SQLite数据库,需要通过Android系统提供的SQLiteOpenHelper的帮助类,通过这个类我们可以得到一个SQLite数据库。因此我们需要创建一个类继承SQLiteOpenHelper这个类,然后实现它的onCreate()和update()方法。  我在我的welthy.myDB包中所创建的基础帮助类的类 只实现onCreate()和update()方法。具体的增,删,改,查操作我另外创建了一个类实现。  所以这里的数据库初始化部分也放在了  操作实现的类中。  对于实现帮助类的代码如下:

package welthy.mydb;

import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBmanager extends SQLiteOpenHelper{
	
	public DBmanager(Context context,String name)
	{
		super(context,name,null,1);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
		System.out.println("create a database");
		db.execSQL("CREATE TABLE user(id int,name varchar(20))");
	}

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		
	}
}

实现了帮助类后 我便可以创建数据库,并对数据库进行一系列的操作。

首先进行数据库的初始化部分:

package welthy.mydb;

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


public class DBways {
	private SQLiteDatabase db;
	private DBmanager dbHelper;
	private String key;
	//private Person person;
	
	public DBways(Context context,String name)
	{
		dbHelper=new DBmanager(context,name);
		db=dbHelper.getWritableDatabase();
		
		ContentValues values=new ContentValues();
		values.put("name", "xiao_ming");
		values.put("id", "001");
		values.put("name", "xiao_hong");
		values.put("id", "002");
		
		db.insert("user", null, values);
		
		System.out.println("创建表"+name);
	}

在进行初始化之前首先要得到SQLiteDatabase的对象和实现SQLiteOpenHelper帮助类的对象(即:DBmanager)。然后再数据库操作实现类DBways类的构造函数中创建数据库。如果仅仅是dbHelper=new DBmanager(context,name);的话是无法得到数据库的,还有通过dbHelper.getWriteable()【需要对数据库编辑时】或者dbHelper.getReadable();【只读取数据库时】。通过这2个函数才可以得到一个数据库。然后通过ContentValues类给数据库的内容进行初始化【也可以不初始化,此时就是一个空数据库】。然后调用insert("表名",null,values)将初始化的值添加进数据库。


初始化后,首先说明下添加数据操作。

这里我定义的函数为:insert(String Pname,int Pid);具体实现内容和初始化添加数据时一样都是调用db【即 SQLiteDatabase的对象】的insert(。。。)函数。具体代码如下:

public void insert(String Pname,int Pid)
	{
		ContentValues value=new ContentValues();
		value.put("name",Pname);
		value.put("id",Pid);
		db.insert("user", null, value);
		System.out.println(value);
	}

主函数中直接调用就可以。


然后说明删除数据操作。

这里我定义的函数有2个一个是根据关键字删除,一个是删除数据库所有数据。调用的是db.delete("表名","删除条件","删除条件中的参数【即删除条件中?号的值】");

其中根据关键字删除的是deleteKey(String name);实现代码如下:

public void deleteKey(String name)
	{
		db.delete("user", "name=?", new String[]{name});
		System.out.printf("delete:%s\n",name );
	}

删除所有数据就是删除条件为null的情况。实现代码如下:

public void deleteAll()
	{
		db.delete("user",null,null);
	}


接着,说明下查询操作。

这里利用Cursor类来搜集查询结果集。这里调用的是rawQuery函数,这个函数是可以直接通过SQL语句进行查找操作。然后结果放入Cursor的对象cursor中。

当然,也可以使用query()函数,这个函数不需要熟悉SQL语句的操作,但同样返回的是cursor类型值。 实现代码如下:

public void queryAll()
	{
		Cursor cursor=db.rawQuery("SELECT * FROM user", null);
		if(cursor.getCount()>0)
		{
			cursor.moveToFirst();
			while(cursor.moveToNext())
			{
				String id=cursor.getString(0);
				String name=cursor.getString(1);
				System.out.printf("%s,%s\n",name,id);
			}
		}
	}

这里得到cursor结果集之后,则可以通过Cursor类的方法对结果进行查询,首先将cursor游标放在第一行cursor.moveToFirst(),然后进入一个循环,只要下一行还有数据,则通过cursor.getString(字段下标【0开始】)以字符串的形式得到数据。直到下一行没有数据为止。


最后,说明下修改操作。

这里我同样定义了2个函数,因为我的字段就只有name和 id 2个。所以,可以根据一个字段修改同一行的另一个字段值。同样是通过ContentValues类得到修改后的数据,然后通过db.update("表名",更新的值,更新条件,更新条件参数)。来修改数据。

首先是修改name字段的函数editName(String name,int id)。具体实现代码如下:

public void editName(String name,int id)
	{
		ContentValues values=new ContentValues();
		values.put("name",name);
		db.update("user", values, "id=?", new String[]{String.valueOf(id)});
	}

然后是修改id字段的函数editId(String name,int id)。 具体实现代码如下:

public void editId(String name,int id)
	{
		ContentValues values=new ContentValues();
		values.put("id",id);
		db.update("user", values, "name=?", new String[]{name});
	}

具体的4种操作如上所述。如有疑问,欢迎探讨。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值