一个简单的例子,当点击按钮时进行相应的操作,效果图如下:

项目代码如下:

DatabaseHelper类

package com.example.sqlitedatebasetest; 

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
/**
*
* @author 作者 程其春
* @version 创建时间:2015-11-3 上午11:32:55
* 类说明
* SQLiteOpenHelper是一个辅助类,用来管理数据库的创建和版本,它提供两个方面的功能
* 第一,getReadableDatebase和getWriteableDatebase 可以获得SQLiteDatebase对象,
* 通过该对象可以对数据库进行操作
* 第二,提供了onCreate(),onUpgrade两个回调函数,允许我们再创建和更新数据库时,可以进行自己的操作
*/
public class DatabaseHelper extends SQLiteOpenHelper{ private static final int VERSION = 1; /**
* 在SQLiteOpenHelper的子类当中,必须有该构造函数
* @param context 上下文对象
* @param name 数据库名称
* @param factory
* @param version 当前数据库的版本,值必须是整数并且是递增的状态
*/
public DatabaseHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
} public DatabaseHelper(Context context,String name,int version){
this(context,name,null,version);
} public DatabaseHelper(Context context, String name){
this(context,name,VERSION);
}
/**
* 该函数是在第一次创建的时候执行,实际上是第一次得到SQLitedatebase对象的时候才会调用这个方法。
*/
@Override
public void onCreate(SQLiteDatabase db) {
System.out.println("create a datebase");
//execSQL用于执行SQL语句
db.execSQL("create table user (id int,name verchar(20))");
} @Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
System.out.println("upgrade a database");
} }

MainActivity类

package com.example.sqlitedatebasetest;

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebChromeClient.CustomViewCallback;
import android.widget.Button; public class MainActivity extends ActionBarActivity implements OnClickListener {
private Button btnCreateDatabase = null;
private Button btnUpdateDatabase = null;
private Button btnInsert = null;
private Button btnUpdate = null;
private Button btnQuery = null;
private Button btnDelete = null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 根据控件id获得相应的控件对象
btnCreateDatabase = (Button) this.findViewById(R.id.btn_createDatebase);
btnUpdateDatabase = (Button) this.findViewById(R.id.btn_updateDatebase);
btnInsert = (Button) this.findViewById(R.id.btn_insert);
btnUpdate = (Button) this.findViewById(R.id.btn_update);
btnQuery = (Button) this.findViewById(R.id.btn_query);
btnDelete = (Button) this.findViewById(R.id.btn_delete);
// 为按钮设置监听器
btnCreateDatabase.setOnClickListener(this);
btnUpdateDatabase.setOnClickListener(this);
btnInsert.setOnClickListener(this);
btnUpdate.setOnClickListener(this);
btnQuery.setOnClickListener(this);
btnDelete.setOnClickListener(this);
} @Override
public void onClick(View v) {
switch (v.getId()) {
// btn_createDatebase点击事件监听器
case R.id.btn_createDatebase:
// 创建了一个DatebaseHelper对象,只执行这句话是不会创建或打开连接的
DatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this,
"test01_db");
// 只有调用了DatabaseHelper的getWritableDatabase()方法或者getReadableDatabase()方法之后,才会创建或打开一个连接
SQLiteDatabase sqLiteDatabase = dbHelper.getReadableDatabase();
break; // btn_updateDatebase点击事件监听器
case R.id.btn_updateDatebase:
DatabaseHelper dbHelper2 = new DatabaseHelper(MainActivity.this,
"test01_db", 2);
// 得到一个只读的SQLiteDatabase对象
SQLiteDatabase sqLiteDatabase2 = dbHelper2.getReadableDatabase();
break; // btn_insert点击事件监听器
case R.id.btn_insert:
// 创建ContentValues对象
ContentValues values = new ContentValues();
// 向该对象中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致
values.put("id", 1);
values.put("name", "zhangsan");
// 创建DatabaseHelper对象
DatabaseHelper dbHelper3 = new DatabaseHelper(MainActivity.this,
"test01_db", 2);
// 得到一个可写的SQLiteDatabase对象
SQLiteDatabase sqLiteDatabase3 = dbHelper3.getWritableDatabase();
// 调用insert方法,就可以将数据插入到数据库当中
// 第一个参数:表名称
// 第二个参数:SQl不允许一个空列,如果ContentValues是空的,那么这一列被明确的指明为NULL值
// 第三个参数:ContentValues对象
sqLiteDatabase3.insert("test01_db", null, values);
break; // btn_update点击事件监听器
case R.id.btn_update:
// 创建一个DatabaseHelper对象
DatabaseHelper dbHelper4 = new DatabaseHelper(MainActivity.this,
"test01_db", 2);
// 得到一个可写的SQLiteDatabase对象
SQLiteDatabase sqliteDatabase4 = dbHelper4.getWritableDatabase();
// 创建一个ContentValues对象
ContentValues values2 = new ContentValues();
values2.put("name", "lisi");
// 调用update方法
// 第一个参数String:表名
// 第二个参数ContentValues:ContentValues对象
// 第三个参数String:where字句,相当于sql语句where后面的语句,?号是占位符
// 第四个参数String[]:占位符的值
sqliteDatabase4.update("user", values2, "id=?",
new String[] { "1" });
System.out.println("-----------update------------");
break; // btn_query点击事件监听器
case R.id.btn_query:
String id = null;
String name = null;
DatabaseHelper dbHelper5 = new DatabaseHelper(MainActivity.this,
"test01_db", 2);
SQLiteDatabase sqLiteDatabase5 = dbHelper5.getReadableDatabase();
// 调用SQLiteDatabase对象的query方法进行查询,返回一个Cursor对象:由数据库查询返回的结果集对象
// 第一个参数String:表名
// 第二个参数String[]:要查询的列名
// 第三个参数String:查询条件
// 第四个参数String[]:查询条件的参数
// 第五个参数String:对查询的结果进行分组
// 第六个参数String:对分组的结果进行限制
// 第七个参数String:对查询的结果进行排序
Cursor cursor = sqLiteDatabase5.query("user", new String[] { "id",
"name" }, "id=?", new String[] { "1" }, null, null, null);
while(cursor.moveToNext()){
id = cursor.getString(cursor.getColumnIndex("id"));
name = cursor.getString(cursor.getColumnIndex("name"));
}
System.out.println("-------------query------------");
System.out.println("id: "+id);
System.out.println("name: "+name);
break; // btn_delete点击事件监听器
case R.id.btn_delete:
//创建DatabaseHelper对象
DatabaseHelper dbHelper6 = new DatabaseHelper(MainActivity.this,"test01_db",2);
//获得可写的SQLiteDatabase对象
SQLiteDatabase sqliteDatabase6 = dbHelper6.getWritableDatabase();
//调用SQLiteDatabase对象的delete方法进行删除操作
//第一个参数String:表名
//第二个参数String:条件语句
//第三个参数String[]:条件值
sqliteDatabase6.delete("user", "id=?", new String[]{"1"});
System.out.println("----------delete----------");
break;
default:
break;
}
} }

在虚拟机上运行项目后,如何查看自己已经成功创建了数据表了呢?

可以在eclipse中,选择DDMS,再选择File explorer

找到data/data/自己项目的包名/自己的创建的数据表名

如下图所示:

项目源码已经上传https://github.com/presCheng/sqliteDatabaseTest.git

android SQLite使用SQLiteOpenHelper类对数据库进行增删查改的更多相关文章

  1. android SQLite使用SQLiteOpenHelper类对数据库进行操作

    android SQLite使用SQLiteOpenHelper类对数据库进行操作 原文: http://byandby.iteye.com/blog/835580

  2. MongoDB数据库(二):增删查改

    MongoDB数据库的增删查改 1.插入数据 语法: db.集合名称.insert(document) db.table_name.insert({name:'gj',gender:1}) db.ta ...

  3. java实现简单的数据库的增删查改,并布局交互界面

        一.系统简介 1.1.简介  本系统提供了学生信息管理中常见的基本功能,主要包括管理员.管理员的主要功能有对学生信息进行增加.删除.修改.查找等操作,对信息进行管理,对信息进行修改.查找等操作 ...

  4. [课本]JDBC课程6--使用JDBC的DAO模块化--完成数据库的增删查改_工具类JDBCTools四个(Preparedstatement)功能模块的敲定版

    (课本P273-任务九) /**DAO: Data Access Object * 为什么用: 实现功能的模块化,更有利于代码的维护和升级 * 是什么: 访问数据信息的类,包含对数据的CRUD(cre ...

  5. MongoDB数据库进阶 --- 增删查改...

    注意: monogdb数据在使用之后必须及时 mongodb.close()否则后台崩溃. 在之前的文章中,我已经介绍了什么事MongoDB以及怎么在windows下安装MongoDB等等基本知识. ...

  6. C++连接sqlite数据库的增删查改操作

    这个代码是接着上次说的,要用VS2013操作数据库,首先要配置好环境,创建好数据库表等. 不明白的翻我前面2篇看看~~~ 关于前面的用到的goto 语句,这个我也是参考其他博主写的,现在我注释掉了,毕 ...

  7. js实现对数据库的增删查改

    1.查询 复制代码 代码如下: <HTML> <HEAD> <TITLE>数据查询</TITLE> <Script > var conn = ...

  8. 用Jmeter实现mysql数据库的增删查改

    主要是参考虫师的“使用JMeter创建数据库(Mysql)测试”. 1.打开Jmeter,点击测试计划 链接:https://pan.baidu.com/s/1ZtaZ6IC_0DRjSlXkjslY ...

  9. SSM框架-MyBatis框架数据库的增删查改操作

    话不多说,在User.xml文件中主要写一下操作数据库的sql语句,增,删,查,改是最常见的数据库操作 User.xml文件下:

随机推荐

  1. sizeof(int *) 和 sizeof(int)型的大小问题

    小问题,暂时记录注意一下   printf("sizeof(int): %d\n", (int)sizeof(int));     printf("sizeof(int ...

  2. 扩展《C程序设计语言》练习2-3程序通用性

    最近开始自学C语言,在看K&R的<C程序设计语言>.练习2-3要求写一个函数,将输入的十六进制数字字符串转换成与之等价的整数值,配套答案没有扩展程序的通用性,所以我就稍微改造改造. ...

  3. c程序代码的内存布局(学好C的基础)

    一个程序本质上都是由 BSS 段.data段.text段三个组成的.这样的概念在当前的计算机程序设计中是很重要的一个基本概念,而且在嵌入式系统的设计中也非常重要,牵涉到嵌入式系统运行时的内存大小分配, ...

  4. spring注解机制和XML配置机制之间的比较

    XML配置的优缺点: 优点有:1. XML配置方式进一步降低了耦合,使得应用更加容易扩展,即使对配置文件进一步修改也不需要工程进行修改和重新编译.2. 在处理大的业务量的时候,用XML配置应该更加好一 ...

  5. VM虚拟机上 实现CentOS 6.X下部署LVS(NAT)+keepalived实现高性能高可用负载均衡

    一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 1 准备工作 a) 虚拟机上安装CentOS6.x操作系统,参考一下博客内容 http://www.cnblogs.com/seesea125 ...

  6. The first time

    早上起来发现昨晚申请的博客开通了,\(^o^)/~纪念下,就像刚打代码学的hello world一样,用c,c++写一个程序纪念下.O(∩_∩)O~哈哈哈哈哈. /*C hello world程序*/ ...

  7. 使用Java Applet在客户端解压缩,以及使用证书的意义

    以前解压缩是用Java Applet在客户端解压缩,而且用户不知道这回事.但是现在Chrome不支持NP API了,所以不得不把Java去掉,然后在服务器里解压缩.风险在于,解压缩以后,传输到客户端的 ...

  8. Javascript语法基础

    Javascript语法基础   一.基本数据类型   JavaScript中支持数字.字符串和布尔值三种基本数据类型: 1.数字 数字型是JavaScript中的基本数据类型.在JavaScript ...

  9. 设计模式(三): FACTORY工厂模式 -- 创建型模式

    1.定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类. 2.适用场景 1.第一种情况是对于某个产品,调用者清楚地知道应该使用哪个具体 ...

  10. topcoder13185 TreePuzzle

    https://community.topcoder.com/stat?c=problem_statement&pm=13185 被wck屠了. 考试时候想分类讨论,结果发现情况有点复杂,最后 ...