使用特定方法 *** 作SQLite数据库

使用特定方法 *** 作SQLite数据库,第1张

概述如果开发者对于SQL语法不熟悉,Android的SQLiteDatabase提供了增、删、改、查语句来 *** 作数据库,虽然Android提供了这些所谓的“便捷”方法 *** 作数据库,但笔者认为这些方法纯属“鸡肋”,毕竟SQL语法是程序员的基本功。不过Android既然提供了这些方法,这里也简单介绍一下。 1、insert :方法签名: long insert(String table, String nul

如果开发者对于sql语法不熟悉,AndroID的sqliteDatabase提供了增、删、改、查语句来 *** 作数据库,虽然AndroID提供了这些所谓的“便捷”方法 *** 作数据库,但笔者认为这些方法纯属“鸡肋”,毕竟sql语法是程序员的基本功。不过AndroID既然提供了这些方法,这里也简单介绍一下。

1、insert :方法签名:long insert(String table,String nullColumnHack,ContentValues values)

table:表名。

nullColumnHack:强行插入null值的数据列的列名。当values为null或它包含的键值对的数量为0时,就起作用了。它不应是主键列的列名,也不应是非空列的列名。

values:代表一行记录的数据。ContentValues类似于Map集合,存放键值对,键为数据列的列名。

2、update:方法签名:int update(String table,ContentValues values,String whereClause,String[] whereArgs)

table:表名。

values:想更新的数据。

whereClause:条件。

whereArgs:为whereClause子句传入参数。即用来替代占位符的内容。

返回的整数是受此update语句影响的记录的条数。

3、delete:方法签名:int delete(String table,String[] whereArgs)

table:表名

whereClause:条件,满足此条件的记录将会被删除。

whereArgs:用于为whereClause子句传入参数。即替代占位符。

返回的整数是受此delete语句影响的记录的条数。

4、query:方法签名:Cursor query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy)

table:表名

columns:要查询的列名

selection:查询条件子句 相当于where关键字后面的部分。

selectionArgs:为selection传入参数,替代占位符。

groupBy:控制分组,相当于select语句group by后面的部分

having:用于对分组进行过滤,相当于select语句having后面的部分

orderBy:排序。相当于select语句order by后面的部分

下面通过一个简单实例来演示它们的使用,代码如下:

Activity:

package com.lovo.activity;import androID.app.Activity;import androID.content.ContentValues;import androID.database.Cursor;import androID.database.sqlite.sqliteDatabase;import androID.os.Bundle;import androID.vIEw.VIEw;import androID.Widget.TextVIEw;import com.lovo.dao.DBUtil;import com.lovo.databasetest.R;public class DatabaseTestActivity extends Activity {	private TextVIEw show;	private sqliteDatabase db;	@OverrIDe	protected voID onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentVIEw(R.layout.main);		show = (TextVIEw) findVIEwByID(R.ID.main_tv_show);		db = DBUtil.getInstance(this);	}	public voID click(VIEw v) {		switch (v.getID()) {		case R.ID.main_btn_insert:			// 添加指定数据			ContentValues insertValues = new ContentValues();			insertValues.put("s_name","李四");			insertValues.put("s_age",23);			insertValues.put("s_sex","男");			db.insert("t_stu",null,insertValues);			break;		case R.ID.main_btn_delete:			// 根据指定条件删除数据			db.delete("t_stu","s_name like ?",new String[] { "李_" });			break;		case R.ID.main_btn_update:			// 根据指定ID修改数据			ContentValues updateValues = new ContentValues();			updateValues.put("s_name","新人名");			db.update("t_stu",updateValues,"_ID=?",new String[] { "2" });			break;		case R.ID.main_btn_find:			// 查询所有数据			Cursor cursor = db.query("t_stu",null);			// 根据指定条件查询			// Cursor cursor=db.query("t_stu",new			// String[]{"张%"},null);			StringBuffer sb = new StringBuffer();			while (cursor.movetoNext()) {				int ID = cursor.getInt(cursor.getColumnIndex("_ID"));				String name = cursor.getString(cursor.getColumnIndex("s_name"));				String sex = cursor.getString(cursor.getColumnIndex("s_sex"));				int age = cursor.getInt(cursor.getColumnIndex("s_age"));				sb.append(ID + " " + name + " " + sex + " " + age + "\n");			}			show.setText(sb.toString());			break;		}	}}

sqliteOpenHelper子类(DBUtil):

package com.lovo.dao;import androID.content.Context;import androID.database.sqlite.sqliteDatabase;import androID.database.sqlite.sqliteDatabase.CursorFactory;import androID.database.sqlite.sqliteOpenHelper;public class DBUtil extends sqliteOpenHelper {	private static DBUtil dbUtil;	private DBUtil(Context context,String name,CursorFactory factory,int version) {		super(context,name,factory,version);	}	public static sqliteDatabase getInstance(Context context) {		if (dbUtil == null) {			// 指定数据库名为student,需修改时在此修改;此处使用默认工厂;指定版本为1			dbUtil = new DBUtil(context,"student",1);		}		return dbUtil.getReadableDatabase();	}	@OverrIDe	public voID onCreate(sqliteDatabase db) {		try {			db.execsql("create table t_stu(_ID integer primary key,s_name text,s_age integer,s_sex text)");		} catch (Exception e) {			e.printstacktrace();		}	}	@OverrIDe	public voID onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) {		System.out.println("-----onUpgrade Called-----" + oldVersion + "--->"				+ newVersion);	}}

布局XML:

<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:orIEntation="vertical" >    <button        androID:ID="@+ID/main_btn_insert"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:onClick="click"        androID:text="添加" />    <button        androID:ID="@+ID/main_btn_delete"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:onClick="click"        androID:text="删除" />    <button        androID:ID="@+ID/main_btn_update"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:onClick="click"        androID:text="修改" />    <button        androID:ID="@+ID/main_btn_find"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:onClick="click"        androID:text="查找" />    <TextVIEw        androID:ID="@+ID/main_tv_show"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content" /></linearLayout>
总结

以上是内存溢出为你收集整理的使用特定方法 *** 作SQLite数据库全部内容,希望文章能够帮你解决使用特定方法 *** 作SQLite数据库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1180778.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存