如果开发者对于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 whereClause,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;@Overrideprotected 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, null, null, null, null,null);// 根据指定条件查询// Cursor cursor=db.query("t_stu", null, "s_name like ?", new// String[]{"张%"},null, null, 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,需修改时在此修改;此处使用默认工厂;指定版本为1dbUtil = new DBUtil(context, "student", null, 1);}return dbUtil.getReadableDatabase();}@Overridepublic 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();}}@Overridepublic 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>




更多相关文章

  1. android 关于Location of the Android(安卓)SDK has not been se
  2. android service
  3. Android(安卓)获取进程名称(可以区分内部进程)
  4. android zxing 扫描二维码 横屏转竖屏
  5. 【绝对干货】超全Android中高级面试复习大纲,覆盖所有面试知识!(上
  6. 浅谈Java中Collections.sort对List排序的两种方法
  7. mybatisplus的坑 insert标签insert into select无参数问题的解决
  8. python起点网月票榜字体反爬案例
  9. Python list sort方法的具体使用

随机推荐

  1. Android(安卓)Java Framework显示Toast(无
  2. Android\OPhone自定义视图(View)
  3. android 中判断WiFi是否可用的可靠方法
  4. Android为什么推荐使用SparseArray来替代
  5. Android中绘制简单几何图形和路径Path
  6. Android:手把手带你了解实用的Android(安
  7. android 一个小例子说明handler和AlertDi
  8. Android(安卓)蓝牙学习
  9. 想要在 Android(安卓)體驗 Siri 嗎?快來試
  10. Android(安卓)属性动画使用(三)