- 浏览: 1697296 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (159)
- android 2D (13)
- android 控件 (12)
- android UI (16)
- android 动画 (5)
- android 线程 (3)
- android 数据存储 (15)
- android 基础 (13)
- android xml解析 (1)
- android 多媒体开发 (4)
- android 服务 (4)
- android 安全 (1)
- android WebKit以及相关 (3)
- android 电话 (2)
- android 首选项 (5)
- java基础 (16)
- java 多线程 (1)
- java IO (7)
- android工具使用篇 (1)
- android素材资源区 (1)
- android教程资源区 (1)
- java_android异常记录 (5)
- android问题记录 (1)
- android 推荐资源 (1)
- android 源码篇 (3)
- android SDK (2)
- Google Map For Android (2)
- android 项目问题 (2)
- git (0)
- android API 变化 (1)
- MyEclipse (2)
- Swing组件 (1)
- 活法 (0)
- 其它 (2)
- linux (7)
- 菜鸟的java学习笔记 (0)
- 网络 (0)
- 健康 (1)
- Eclipse在Ubuntu下无法双击启动解决办法 (1)
最新评论
-
tydyz:
引用
android SQLiteOpenHelper使用示例 -
tydyz:
[color=red][/color]
android SQLiteOpenHelper使用示例 -
tydyz:
[flash=200,200][flash=200,200][ ...
android SQLiteOpenHelper使用示例 -
梁家大丫头:
写的还不错,不过不是我需要的。
android 理解和使用自定义权限 -
love_java_cc:
牛逼,太齐全了,收藏
MyEclipse 快捷键大全
一、 SQLite介绍
SQLite是android内置的一个很小的关系型数据库。
SQLite的官网是http://www.sqlite.org/,可以去下载一些文档或相关信息。
博客中有一篇有稍微详细一点的介绍,大家可以去看一下。
二、 SQLiteOpenHelper的使用方法
SQLiteOpenHelper是一个辅助类来管理数据库的创建和版本。
可以通过继承这个类,实现它的一些方法来对数据库进行一些操作。
所有继承了这个类的类都必须实现下面这样的一个构造方法:
public DatabaseHelper(Context context, String name, CursorFactory factory, int version)
第一个参数:Context类型,上下文对象。
第二个参数:String类型,数据库的名称
第三个参数:CursorFactory类型
第四个参数:int类型,数据库版本
下面是这个类的几个方法:
方法名 返回类型 描述 备注
getReadableDatabase() synchronized SQLiteDatabase 创建或打开一个数据库 可以通过这两个方法返回的SQLiteDatabase对象对数据库进行一系列的操作,如新建一个表,插入一条数据等
getWritableDatabase() synchronized SQLiteDatabase 创建或打开一个可以读写的数据库
onCreate(SQLiteDatabase db) abstract void 第一次创建的时候调用
onOpen(SQLiteDatabase db) void 打开数据库
onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) abstract void 升级数据库
close() synchronized void 关闭所有打开的数据库对象
下面有一个例子,当点击按钮时进行相应的操作,效果图如下:
介于代码中有详细备注了,在此我就不多写了,直接贴代码了,代码如下:
DatabaseHelper类:
Activity类:
布局文件:
String文件:
项目源码已上传,有需要的可下载。
在实例化DatabaseHelper对象时. 可以写成
DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_yangyz_db",null, 2);
第三个参数表示 创建Cursor的工厂类。参数是为了可以自定义Cursor创建。
SQLite是android内置的一个很小的关系型数据库。
SQLite的官网是http://www.sqlite.org/,可以去下载一些文档或相关信息。
博客中有一篇有稍微详细一点的介绍,大家可以去看一下。
二、 SQLiteOpenHelper的使用方法
SQLiteOpenHelper是一个辅助类来管理数据库的创建和版本。
可以通过继承这个类,实现它的一些方法来对数据库进行一些操作。
所有继承了这个类的类都必须实现下面这样的一个构造方法:
public DatabaseHelper(Context context, String name, CursorFactory factory, int version)
第一个参数:Context类型,上下文对象。
第二个参数:String类型,数据库的名称
第三个参数:CursorFactory类型
第四个参数:int类型,数据库版本
下面是这个类的几个方法:
方法名 返回类型 描述 备注
getReadableDatabase() synchronized SQLiteDatabase 创建或打开一个数据库 可以通过这两个方法返回的SQLiteDatabase对象对数据库进行一系列的操作,如新建一个表,插入一条数据等
getWritableDatabase() synchronized SQLiteDatabase 创建或打开一个可以读写的数据库
onCreate(SQLiteDatabase db) abstract void 第一次创建的时候调用
onOpen(SQLiteDatabase db) void 打开数据库
onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) abstract void 升级数据库
close() synchronized void 关闭所有打开的数据库对象
下面有一个例子,当点击按钮时进行相应的操作,效果图如下:
介于代码中有详细备注了,在此我就不多写了,直接贴代码了,代码如下:
DatabaseHelper类:
package android.sqlite; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase.CursorFactory; /** * SQLiteOpenHelper是一个辅助类,用来管理数据库的创建和版本他,它提供两个方面的功能 * 第一,getReadableDatabase()、getWritableDatabase()可以获得SQLiteDatabase对象,通过该对象可以对数据库进行操作 * 第二,提供了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调用父类当中的构造函数 super(context, name, factory, version); } public DatabaseHelper(Context context, String name, int version){ this(context,name,null,version); } public DatabaseHelper(Context context, String name){ this(context,name,VERSION); } //该函数是在第一次创建的时候执行,实际上是第一次得到SQLiteDatabase对象的时候才会调用这个方法 @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub System.out.println("create a database"); //execSQL用于执行SQL语句 db.execSQL("create table user(id int,name varchar(20))"); } @Override public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { // TODO Auto-generated method stub System.out.println("upgrade a database"); } }
Activity类:
package android.sqlite; 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.view.View.OnClickListener; import android.widget.Button; public class SQLiteActivity extends Activity { /** Called when the activity is first created. */ private Button createDatabaseButton = null; private Button updateDatabaseButton = null; private Button insertButton = null; private Button updateButton = null; private Button selectButton = null; private Button deleteButton = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 根据控件id获得相应的控件对象 createDatabaseButton = (Button) findViewById(R.id.createDatabase); updateDatabaseButton = (Button) findViewById(R.id.updateDatabase); insertButton = (Button) findViewById(R.id.insert); updateButton = (Button) findViewById(R.id.update); selectButton = (Button) findViewById(R.id.select); deleteButton = (Button) findViewById(R.id.delete); // 为按钮设置监听器 createDatabaseButton .setOnClickListener(new CreateDatabaseOnClickListener()); updateDatabaseButton .setOnClickListener(new UpdateDatabaseOnClickListener()); insertButton.setOnClickListener(new InsertOnClickListener()); updateButton.setOnClickListener(new UpdateOnClickListener()); selectButton.setOnClickListener(new SelectOnClickListener()); deleteButton.setOnClickListener(new DeleteOnClickListener()); } // createDatabaseButton点击事件监听器 class CreateDatabaseOnClickListener implements OnClickListener { public void onClick(View v) { // 创建了一个DatabaseHelper对象,只执行这句话是不会创建或打开连接的 DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this, "test_yangyz_db"); // 只有调用了DatabaseHelper的getWritableDatabase()方法或者getReadableDatabase()方法之后,才会创建或打开一个连接 SQLiteDatabase sqliteDatabase = dbHelper.getReadableDatabase(); } } // updateDatabaseButton点击事件监听器 class UpdateDatabaseOnClickListener implements OnClickListener { public void onClick(View v) { // TODO Auto-generated method stub DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this, "test_yangyz_db", 2); // 得到一个只读的SQLiteDatabase对象 SQLiteDatabase sqliteDatabase = dbHelper.getReadableDatabase(); } } // insertButton点击事件监听器 class InsertOnClickListener implements OnClickListener { public void onClick(View v) { // 创建ContentValues对象 ContentValues values = new ContentValues(); // 向该对象中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致 values.put("id", 1); values.put("name", "yangyz"); // 创建DatabaseHelper对象 DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this, "test_yangyz_db", 2); // 得到一个可写的SQLiteDatabase对象 SQLiteDatabase sqliteDatabase = dbHelper.getWritableDatabase(); // 调用insert方法,就可以将数据插入到数据库当中 // 第一个参数:表名称 // 第二个参数:SQl不允许一个空列,如果ContentValues是空的,那么这一列被明确的指明为NULL值 // 第三个参数:ContentValues对象 sqliteDatabase.insert("user", null, values); } } // updateButton点击事件监听器 class UpdateOnClickListener implements OnClickListener { public void onClick(View v) { // 创建一个DatabaseHelper对象 DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this, "test_yangyz_db", 2); // 得到一个可写的SQLiteDatabase对象 SQLiteDatabase sqliteDatabase = dbHelper.getWritableDatabase(); // 创建一个ContentValues对象 ContentValues values = new ContentValues(); values.put("name", "zhangsan"); // 调用update方法 // 第一个参数String:表名 // 第二个参数ContentValues:ContentValues对象 // 第三个参数String:where字句,相当于sql语句where后面的语句,?号是占位符 // 第四个参数String[]:占位符的值 sqliteDatabase.update("user", values, "id=?", new String[] { "1" }); System.out.println("-----------update------------"); } } // selectButton点击事件监听器 class SelectOnClickListener implements OnClickListener { public void onClick(View v) { String id = null; String name = null; //创建DatabaseHelper对象 DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this, "test_yangyz_db", 2); // 得到一个只读的SQLiteDatabase对象 SQLiteDatabase sqliteDatabase = dbHelper.getReadableDatabase(); // 调用SQLiteDatabase对象的query方法进行查询,返回一个Cursor对象:由数据库查询返回的结果集对象 // 第一个参数String:表名 // 第二个参数String[]:要查询的列名 // 第三个参数String:查询条件 // 第四个参数String[]:查询条件的参数 // 第五个参数String:对查询的结果进行分组 // 第六个参数String:对分组的结果进行限制 // 第七个参数String:对查询的结果进行排序 Cursor cursor = sqliteDatabase.query("user", new String[] { "id", "name" }, "id=?", new String[] { "1" }, null, null, null); // 将光标移动到下一行,从而判断该结果集是否还有下一条数据,如果有则返回true,没有则返回false while (cursor.moveToNext()) { id = cursor.getString(cursor.getColumnIndex("id")); name = cursor.getString(cursor.getColumnIndex("name")); } System.out.println("-------------select------------"); System.out.println("id: "+id); System.out.println("name: "+name); } } // deleteButton点击事件监听器 class DeleteOnClickListener implements OnClickListener { public void onClick(View v) { //创建DatabaseHelper对象 DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_yangyz_db",2); //获得可写的SQLiteDatabase对象 SQLiteDatabase sqliteDatabase = dbHelper.getWritableDatabase(); //调用SQLiteDatabase对象的delete方法进行删除操作 //第一个参数String:表名 //第二个参数String:条件语句 //第三个参数String[]:条件值 sqliteDatabase.delete("user", "id=?", new String[]{"1"}); System.out.println("----------delete----------"); } } }
布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:id="@+id/createDatabase" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/createDatabaseButton" /> <Button android:id="@+id/updateDatabase" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/updateDatabaseButton" /> <Button android:id="@+id/insert" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/insertButton" /> <Button android:id="@+id/update" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/updateButton" /> <Button android:id="@+id/select" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/selectButton" /> <Button android:id="@+id/delete" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/deleteButton" /> </LinearLayout>
String文件:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, SQLiteActivity!</string> <string name="app_name">SQLiteTest</string> <string name="createDatabaseButton">createDatabase</string> <string name="updateDatabaseButton">updateDatabase</string> <string name="insertButton">insert</string> <string name="updateButton">update</string> <string name="selectButton">select</string> <string name="deleteButton">delete</string> </resources>
项目源码已上传,有需要的可下载。
评论
16 楼
xubuhang
2014-11-23
第二次点击createDatabase出现错误:android.database.sqlite.SQLiteException: Can't downgrade database from version 2 to 1,是什么原因呢?
15 楼
huigegood
2014-08-28
lz,请问为什么,每次操作都要重新创建一个数据库实例对象?
14 楼
huigegood
2014-08-28
引用
引用
引用
13 楼
u013623223
2014-06-14
非常好, !! 赞一个!!
12 楼
take
2013-08-15
xumen 写道
public DatabaseHelper(Context context, String name, CursorFactory factory,
int version) {
这个构造函数什么时候调用的啊?求解...
int version) {
这个构造函数什么时候调用的啊?求解...
在实例化DatabaseHelper对象时. 可以写成
DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_yangyz_db",null, 2);
第三个参数表示 创建Cursor的工厂类。参数是为了可以自定义Cursor创建。
11 楼
xumen
2013-07-30
public DatabaseHelper(Context context, String name, CursorFactory factory,
int version) {
这个构造函数什么时候调用的啊?求解...
int version) {
这个构造函数什么时候调用的啊?求解...
10 楼
longlongggg
2013-02-23
不错的,感谢
9 楼
mikite
2013-02-05
写的很好,谢谢博主
8 楼
xiedingpeng
2013-01-21
[align=right][align=center][align=center][align=right][align=center][align=left]
[/align][/align][/align][/align][/align][/align]
7 楼
太容易
2013-01-15
6 楼
jameszhu688
2013-01-14
mark,学习完毕,很好!
5 楼
laibinhua
2013-01-07
已下载,读子贴,很不错,简单易懂,就是没有将数据输出显示在gridview或textview的方式!如果有就更好了!
4 楼
feng19872
2012-10-18
mark
3 楼
lorrycat
2012-05-15
想问下,这个db创建在项目下的哪个目录里呢?能制定目录创建吗?
2 楼
endual
2012-04-15
mars ?
1 楼
ldjan
2011-08-30
发表评论
-
android LiveFolder(活动文件夹) 完全解析
2011-05-20 23:12 5400如果大家对 ContentP ... -
android Preferences使用示例二
2010-12-09 14:54 16813Preperences 是一种应用程序内部轻量级的 ... -
android 自定义 Content Provider示例
2010-12-09 13:04 18603我们大家都知道 ... -
android SQLiteOpenHelper使用示例
2010-12-08 01:08 51018我们大家都知道Android平台提供给我们一个数据库辅 ... -
android Content Provider的使用
2010-12-07 23:31 5701Content Provider 属于A ... -
android 读取Resources 和 Assets 中的文件
2010-12-07 15:50 33647在Android平台下,除了对应用程序的私有文件夹中的 ... -
android 私有文件夹 文件的写入与读取
2010-12-07 15:05 19919在介绍如何在Android平台下进行文件的读取之前, ... -
android SQLite数据库基本操作示例
2010-12-06 23:36 21221这个例子实现了一个完整的数据库操作示例。首先运行项 ... -
android SQLite编程详解
2010-12-05 18:51 8333SQLite 数据库功能非常强大,使用起来也非常方便 ... -
android SQLite简介
2010-12-05 00:05 2798一些概念性的东西 ... -
android 数据存储之 Network
2010-12-04 23:03 3460这篇文章演示2 ... -
android 数据存储之 Files
2010-12-04 18:43 3105Android中可以在设备本身的存储设备或者外接的 ... -
android 数据存储之 Shared Preferences
2010-12-04 12:22 7400Shared Preferences类似于我们常 ... -
android 数据存储初探
2010-12-04 00:02 1864一些概念性的 ...
相关推荐
总结一下,Android中的SQLite数据库操作主要依赖SQLiteOpenHelper类,它提供了创建和升级数据库的能力。ListView结合适配器可以方便地展示数据库中的数据。此外,Menu键的使用增强了应用的交互性,使用户能轻松访问...
1. **SQLiteManager**: 这个类通常是对SQLite数据库操作的封装,提供一套简洁易用的API,用于简化数据库的交互。例如,它可能包含以下方法: - `insert`: 新增数据,利用`ContentValues`对象存储待插入的数据,通过...
- **加密**: 可以使用第三方库对SQLite数据库进行加密,增强数据安全性。 - **索引**: 为经常用于查询的字段创建索引,提高查询速度。 - **批量操作**: 避免频繁的单条数据操作,尽量使用批处理来提升性能。 - **...
今天我们讲讲在android studio中利用数据库存储中的SQLiteOpenHelper()方法建立数据库 SQLiteOpenH elper中需要重载函数: onCreate( ):利用SQL语句,在系统中创建数据库(表)功能 onUpgrade( ):利用SQL语句,...
这个"Android SQLite数据库操作Demo"项目将帮助你理解如何在实际应用中与SQLite数据库进行交互,包括基本的CRUD操作以及事务处理,这些都是Android开发中不可或缺的部分。通过实践这个Demo,你可以深入理解SQLite...
其次,关于基本的数据库操作,Android提供了SQLiteOpenHelper类,它是操作SQLite数据库的基础。你需要继承这个类,重写onCreate()和onUpgrade()方法,分别用于创建数据库和升级数据库版本。在onCreate()中,你可以...
本篇文章将深入探讨如何在Android中进行SQLite数据库的操作。 一、SQLite数据库简介 SQLite是一个开源的嵌入式数据库系统,它不需要单独的服务器进程,并且全部数据库都存储在一个文件中。在Android中,每个应用都...
- **创建SQLite数据库**:首先,你需要在Android应用中创建SQLite数据库,这通常通过扩展SQLiteOpenHelper类来实现,包括onCreate()和onUpgrade()方法。 - **定义表结构**:在数据库中创建表,定义列名和数据类型...
1. 加密后的数据库操作与普通SQLite操作类似,但需要注意的是,所有对数据库的读写操作都需要在已打开的加密数据库上下文中进行。 2. 数据迁移:如果应用之前使用的是未加密的SQLite数据库,需要在升级时迁移数据到...
本篇主要介绍如何使用Android内置的`SQLiteOpenHelper`类来操作SQLite数据库,包括创建数据库、升级数据库、执行增删改查(CRUD)操作等核心知识点。 ### 1. 数据库初始化与创建 `SQLiteOpenHelper`是Android提供...
总的来说,“Android SQLite学习工具”这篇博客可能涵盖了如何在Android项目中使用SQLite数据库,以及如何利用sqlite3.exe进行数据库的外部操作。对于Android开发者来说,掌握SQLite的使用是必不可少的技能,因为它...
本主题主要探讨如何通过源代码来实现对SQLite数据库的增、删、查、改(CRUD)操作。 首先,SQLiteAdmin.rar可能包含一个用于管理SQLite数据库的工具类或者应用程序。这个工具通常会提供创建、打开、关闭数据库,...
在Android应用开发中,SQLite是一个重要的组成部分,它是一个轻量级的...通过对"Android SQLite数据库操作demo"的学习,开发者可以深入了解如何在Android环境中创建、使用和管理SQLite数据库,提升应用的存储功能。
SQLiteOpenHelper是Android提供的一类用于帮助我们操作SQLite数据库的工具类,它简化了数据库的创建、升级以及版本管理。在这个“android项目利用SQLiteOpenHelper创建数据库文件Demo”中,我们将深入探讨如何在...
Android Studio SQLite数据库使用 Android Studio 提供了SQLite数据库来存储应用程序的数据。在本文中,我们将介绍如何使用SQLite数据库在Android Studio中,并详细解释SQLiteOpenHelper和SQLiteDatabase的使用方法...
总的来说,"Android源码——数据库SQLite.zip"的内容涵盖了SQLite在Android中的使用、数据库的创建与管理、SQL操作、事务处理、性能优化等方面的知识,对于深入理解Android应用的数据存储机制具有很高的学习价值。
在"android sqlite数据库 demo code"中,我们可以看到一个简单的Android应用示例,该示例演示了如何使用SQLite数据库进行数据的增删改查操作。下面将详细介绍这些关键知识点: 1. **SQLiteOpenHelper**: 这是...
这个"Android操作SQLite数据库Demo"将展示如何在Android环境中有效地利用SQLite进行数据管理。以下是一些关键知识点: 1. **SQLiteOpenHelper**: Android提供了`SQLiteOpenHelper`类来帮助我们管理SQLite数据库,...
SQLiteOpenHelper是Android提供的一种管理SQLite数据库的工具类,它简化了数据库的创建和版本管理。本篇文章将深入探讨如何在Android中使用SQLiteOpenHelper进行数据库的简单应用。 首先,SQLiteOpenHelper有两个...