模拟 查询所有数据,增加一条数据,修改某一条数据,删除某一条数据:


SQLiteOpenHelper 帮助类的介绍:

import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; public class MySQLiteOpenHelper extends SQLiteOpenHelper { /**
* 数据库的名称
*/
private static final String DATABASE_NAME = "PersonDB.db"; /**
* 数据库的版本号,以后要升级数据库,修改版本号为 +1 即可
*/
private static final int DATABASE_VERSION = 2; private static MySQLiteOpenHelper instance; /**
* 单例模式
* @param context 传入上下文
* @return 返回MySQLiteOpenHelper对象
*/
public static MySQLiteOpenHelper getInstance(Context context) {
if (null == instance) {
synchronized (MySQLiteOpenHelper.class) {
if (null == instance) {
instance = new MySQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
}
}
}
return instance;
} // 构造方法不对外暴露
private MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
} // 构造方法不对外暴露
private MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
} // 初始化操作,会执行onCreate
@Override
public void onCreate(SQLiteDatabase db) {
// 创建一个 student_table表
db.execSQL("create table student_table(_id integer primary key autoincrement, name text);");
} // 用于升级数据库,当Version 变动了,就会调用onUpgrade方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("alter table student_table add age integer null");
}
}

生成的表结构:


以下代码是,curd操作:

     @Override
public void onClick(View v) {
MySQLiteOpenHelper sqLiteOpenHelper = MySQLiteOpenHelper.getInstance(MainActivity.this);
SQLiteDatabase wdb = sqLiteOpenHelper.getWritableDatabase();
SQLiteDatabase rdb = sqLiteOpenHelper.getReadableDatabase(); switch (v.getId()) {
/*
case R.id.bt_createdb:
sqLiteOpenHelper.getWritableDatabase();
break;
*/ case R.id.bt_select:
// Cursor 就是ResultSet
Cursor cursor = rdb.rawQuery("select _id,name,age from student_table;", 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.d(TAG, "_id:" + _id + " name:" + name + " age:" + age);
}
break; case R.id.bt_add:
wdb.execSQL("insert into student_table(name,age) values('刘德利',19);");
break; case R.id.bt_update:
wdb.execSQL("update student_table set name='德利' where _id = 1;");
break; case R.id.bt_delete:
wdb.execSQL("delete from student_table where _id = 1;");
break; default:
break;
}
}

执行结果:


说说 Cursor:

游标最开始是停留在最前面的:

cursor.moveToNext();

cursor.moveToNext(),的意思是游标往下移动,移到第一行:


谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,

刘德利CSDN博客, http://blog.csdn.net/u011967006

Android Sqlite 增删改查的更多相关文章

  1. android 入门 006(sqlite增删改查)

    android 入门 006(sqlite增删改查) package cn.rfvip.feb_14_2_sqlite; import android.content.Context; import ...

  2. iOS sqlite 增删改查 简单封装(基于 FMDB)

    /** *  对 sqlite 的使用进行简单封装,仅涉及简单的单表 增删改查 * *  基于 FMDB * *  操作基于 model ,数据库表字段与 model 属性一一对应,对 model 整 ...

  3. C#Sqlite增删改查

    说到使用数据库的话,无非也就是对数据的增加,删除和修改以及查询.前文已经 创建好了程序,现在我们就可以来具体实现Sqlite的数据操作,增删改查. 第一步,创建连接字符串来连接数据库: private ...

  4. iOS SQLite 增删改查的封装(关系型)

    在工程里导入libsqlite3.tbd库(Xcode 7) #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder &l ...

  5. Android Studio—增删改查—登录功能

    SQLite数据库的常用操作: create table if not exists 表名(字段1 类型(长度),字段2 类型(长度),...)//       建表 drop table if ex ...

  6. sqlite 增删改查

    PersonDao1.java package mm.shandong.com.testsqlsqllite.dao; import android.content.Context; import a ...

  7. sqlite增删改查

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=&q ...

  8. sqlite增删改查 SimpleCursorAdapter 事务

    <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=&q ...

  9. C# 使用 Dapper 实现 SQLite 增删改查

    Dapper 是一款非常不错的轻型 ORM 框架,使用起来非常方便,经常使用 EF 框架的人几乎感觉不到差别,下面是自己写的 Sqlite 通用帮助类: 数据连接类: public class SQL ...

随机推荐

  1. Mysql count(1) group_concat 高级用法(count 过滤条件,group_concat过滤条件)

    1.官方文档: count:COUNT(expr) [over_clause] https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.h ...

  2. numpy.unpackbits()

    numpy.unpackbits numpy.unpackbits(myarray, axis=None) Unpacks elements of a uint8 array into a binar ...

  3. tf.equal()

    equal( x, y, name=None ) 对输入的 x 和 y 两个 Tensor 逐元素(element-wise)做 (x == y) 逻辑比较,返回 bool 类型的 Tensor. 参 ...

  4. error: In function ‘void* opencv_showimg(void*)’:

    今天这个问题折磨了我一下午,终于知道是为什么了,心酸历程.....赶紧来记录一下 错误: /home/wj/workspace/Loitor_VI_Sensor_SDK_V1./SDK/src/cam ...

  5. jdk8 jvm配置参数说明

    这些选项是特定于Java HotSpot虚拟机的通用选项.-X 显示所有可用-X选项的帮助. -Xbatch 禁用后台编译.默认情况下,JVM将该方法编译为后台任务,以解释器模式运行该方法,直到后台编 ...

  6. windows,phalcon工具的安装使用

    一.使用工具之前,必须安装phalcon的扩展,也就是php_phalcon.dll动态链接库 phalcon官方地址:https://github.com/phalcon/cphalcon/rele ...

  7. PAT 1044 火星数字(20)(思路+代码)

    1044 火星数字(20)(20 分) 火星人是以13进制计数的: 地球人的0被火星人称为tret. 地球人数字1到12的火星文分别为:jan, feb, mar, apr, may, jun, jl ...

  8. [BAT]cmd命令之 cd /d %~dp0

    cd /d %~dp0是什么意思啊?批处理文件中的一条语句意思是 更改当前目录为批处理本身的目录 有些晕吧?不急,我举例 比如你有个批处理a.bat在D:\qq文件夹下 a.bat内容为 cd /d ...

  9. 强制另存文件和加扩展名的代码c#

    强制另存为文件+扩展名的代码using System;using System.Collections.Generic;using System.Linq;using System.Web; name ...

  10. 局部方法$("html").load()和全局方法$.get()、$.post()

    一..load() .load()方法可以参数三个参数:url(必须,请求 html 文件的 url 地址,参数类型为 String).data(可选,发送的 key/value 数据,参数类型为 O ...