- 浏览: 68981 次
- 性别:
- 来自: 上海
最新评论
-
kentihcai:
我这里的下载不了啊
android文件下载进度条实现 -
rabbitinhere:
程序确实是有点问题啊~~~ 2楼正解
android文件下载进度条实现 -
ssy341:
Datatables交流群
http://bbs.sailit ...
jQuery datatables使用 -
zjxkeven:
读取文件字节流时。修改成这样就没有问题了
while ((to ...
android文件下载进度条实现 -
zjxkeven:
我请求一个zip文件,后台下载文件有问题。费了好大劲才查出来。 ...
android文件下载进度条实现
Android中通过SQLite数据库引擎来实现结构化数据存储。SQLite是一个嵌入式数据库引擎,针对内存等资源有限的设备(如手机、PDA、MP3)提供的一种高效的数据库引擎。
SQLite数据库不想其他的数据库(如Oracle),它没有服务器进程。所有的内容包含在同一个单文件中。该文件是跨平台的,可以自由复制。基于其自身的先天优势,SQLite在嵌入式领域得到广泛应用。Android也没有重复发明“轮子”,而是直接是用了SQLite数据库。
一、SQLiteDatabase
Android提供了创建和是用SQLite数据库的API。SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法,另外还有一个SQLiteOpenHelper工具类提供了更简洁的功能。在Android的SDK目录下有sqlite3工具,我们可以利用它创建数据库、创建表和执行一些SQL语句。下面我们先看看SQLiteDatabase的常用方法。
SQLiteDatabase的常用方法
方法名称 |
方法描述 |
openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory) |
打开或创建数据库 |
insert(String table,String nullColumnHack,ContentValues values) |
添加一条记录 |
delete(String table,String whereClause,String[] whereArgs) |
删除一条记录 |
query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy) |
查询一条记录 |
update(String table,ContentValues values,String whereClause,String[] whereArgs) |
修改记录 |
execSQL(String sql) |
执行一条SQL语句 |
close() |
关闭数据库 |
1、打开或者创建数据库
可以使用SQLiteDatabase的静态方法openOrCreateDatabase(String path,SQLiteDatabae.CursorFactory factory)打开或者创建一个数据库,该方法的第一个参数是数据库的创建路径,注意这个路径一定是数据库的全路径。例如/data/data/package/databases/dbname.db。第二个参数是指定返回一个Cursor子类的工厂,如果没有指定(null)则使用默认工厂。
下面的代码创建了一个temp.db数据库
SQLiteDatabase.openOrCreateDatabase("/data/data/com.hualang.test/databases/temp.db",null);
2、创建表
创建一张表很简单。首先,编写创建表的SQL语句,然后,调用SQLiteDatabase的execSQL()方法便可以创建一张表了。
下面的代码创建了一张用户表,属性列为:id(主键并且自动增加)、username(用户名称)、password(密码)
private void createTable(SQLiteDatabase db) { //创建表SQL语句 String sql="create table usertable(id integer primary key autoincrement,username text,password text)"; //执行SQL语句 db.execSQL(sql); }
3、插入数据
插入数据有两种方法:一种是调用SQLiteDatabase的insert(String table,String nullColumnHack,ContentValues values)方法,该方法的第一个参数是表名称,第二个参数是空列的默认值,第三个参数是ContentValues类型的一个封装了列名称和列值的Map;令一种方法是编写插入数据的SQL语句,直接调用SQLiteDatabase的execSQL()方法来执行
下面的代码演示了如何插入一条记录到数据库。
方法1:
//插入数据 private void insert(SQLiteDatabase db) { //插入数据SQL语句 String sql="insert into usertable(username,password) values('hualang','123456')"; //执行SQL语句 db.execSQL(sql); }
方法2:
private void insert(SQLiteDatabase db) { //实例化常量值 ContentValues cv = new ContentValues(); //添加用户名 cv.put("username","hualang"); //添加密码 cv.put("password","123456"); //插入 db.insert("usertable",null,cv); }
4、删除数据
和插入数据类似,删除数据也有两种方法:一种是调用SQLiteDatabase的delete(String table,String whereClause,String[] whereArgs)方法,该方法的第一个参数是表名称,第二个参数是删除条件,第三个参数是删除条件值数组;另一种方法是编写删除SQL语句,调用SQLiteDatabase的execSQL()方法来执行删除。
下面代码演示了如何删除记录
方法1:
//删除 private void delete(SQLiteDatabase db) { //删除SQL语句 String sql = "delete from usertable where id = 6"; //执行SQL语句 db.execSQL(sql); }
方法2:
private void delete(SQLiteDatabase db) { //删除条件 String whereClause = "id=?"; //删除条件参数 String[] whereArgs = {String.valueOf(5)}; //执行删除 db.delete("usertable",whereClause,whereArgs); }
5、查询数据
查询数据相对比较傲复杂,因为查询可能会带来很多条件。不过熟悉SQL查询的读者都知道这只不过是把查询SQL封装成方法而已。下面看一个查询方法。
public Cursor query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit);
各个参数的意义说明:
①table:表名称
②columns:列名称数组
③selection:条件字句,相当于where
④selectionArgs:条件字句,参数数组
⑤groupBy:分组列
⑥having:分组条件
⑦orderBy:排序列
⑧limit:分页查询限制
⑨Cursor:返回值,相当于结果集ResultSet
Cursor是一个游标接口,提供了遍历查询结果的方法,如移动指针方法move(),获得列值方法getString()等.
Cursor游标常用方法
方法名称 |
方法描述 |
getCount() |
总记录条数 |
isFirst() |
判断是否第一条记录 |
isLast() |
判断是否最后一条记录 |
moveToFirst() |
移动到第一条记录 |
moveToLast() |
移动到最后一条记录 |
move(int offset) |
移动到指定记录 |
moveToNext() |
移动到下一条记录 |
moveToPrevious() |
移动到上一条记录 |
getColumnIndexOrThrow(String columnName) |
根据列名称获得列索引 |
getInt(int columnIndex) |
获得指定列索引的int类型值 |
getString(int columnIndex) |
获得指定列缩影的String类型值 |
下面的代码演示了如何查询数据类型
private void query(SQLiteDatabase db) { //查询获得游标 Cursor c = db.query("usertable",null,null,null,null,null,null); //判断游标是否为空 if(c.moveToFirst()) { //遍历游标 for(int i=0;i<c.getCount();i++) { c.move(i); //获得ID int id = c.getInt(0); //获得用户名 String username=c.getString(1); //获得密码 String password=c.getString(2); //输出用户信息 System.out.println(id+":"+username+":"+password); } } }
6、修改数据
和添加删除相同,修改数据有两种方式,一是调用SQLiteDatabase的update(String table,ContentValues values,String whereClause, String[] whereArgs)方法。该方法的第一个参数是表名称,第二个参数是更行列ContentValues类型的键值对(Map),第三个参数是更新条件(where字句),第四个参数是更新条件数组。而是编写更新的SQL语句,调用SQLiteDatabase的execSQL执行更新。
下面的代码演示了如何更新数据
private void update(SQLiteDatabase db) { //修改SQL语句 String sql = "update usertable set password = 654321 where id = 1"; //执行SQL db.execSQL(sql); }
方法2:
private void update(SQLiteDatabase db) { //实例化内容值 ContentValues values = new ContentValues(); //在values中添加内容 values.put("password","123321"); //修改条件 String whereClause = "id=?"; //修改添加参数 String[] whereArgs={String.valuesOf(1)}; //修改 db.update("usertable",values,whereClause,whereArgs); }
二、SQLiteOpenHelper
SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本更新,一般的用法是定义一个类继承之,并实现其抽象方法onCreate(SQLiteDatabase db)和opUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)来创建和更新数据库。
SQLiteOpenHelper常用方法
方法名称 |
方法描述 |
SQLiteOpenHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version) |
构造方法,一般是传递一个要创建的数据库名称name参数 |
onCreate(SQLiteDatabase db) |
创建数据库时调用 |
onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) |
版本更新时调用 |
getReadableDatabase() |
创建或打开一个只读数据库 |
getWritableDatabase() |
创建或打开一个读写数据库 |
例如下面的代码演示
public class MainActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //实例化数据库帮助类 MyDbHelper helper = new MyDbHelper(this); //插入 helper.insert(); //查询 helper.query(); } //数据库帮助类 class MyDbHelper extends SQLiteOpenHelper { //创建表SQL语句 private static final String CREATE_TABLE_SQL = "create table usertable(id intger,name text)"; //SQLiteDatabase实例 private SQLiteDatabase db; //构造方法 MyDbHelper(Context c) { super(c,"test.db",null,2); } public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE_SQL); } public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) { } //插入方法 private void insert() { //插入SQL语句 String sql="insert into usertable(id,name) values(1,'hualang')"; //执行插入 getWriteableDatabase().execSQL(sql); } //查询方法 private void query() { //查询获得游标 Cursor c = getWritableDatabase().query("usertable",null,null,null,null,null,null); //判断游标是否为空 if(c.moveToFirst()) { //遍历游标 for(int i=0;i<c.getCount();i++) { c.move(i); int id = c.getInt(0); String name = c.getString(1); System.out.println(id+":"+name); } } } } }
发表评论
-
android文件下载进度条实现
2011-08-24 17:32 10921做了个小例子,是关于android文件下载过程中进度条的实现, ... -
系统设置更改时间onConfigurationChanged
2011-08-13 12:15 1297在前一个例子中我们看到了屏幕方向的更改,事实上,当屏幕方向改变 ... -
android动态更改屏幕方向
2011-08-13 11:59 6659在androd中要通过程序改变屏幕显示的方向,必须覆盖setR ... -
Android - LayoutInflater 的使用
2011-08-05 09:10 974LayoutInflater is used to insta ... -
使用Shader渲染图形
2011-07-29 17:29 1548public class ShaderActivity ext ... -
android动画
2011-07-29 15:45 1253在Android系统中系统了两种动画实现方式:一种是Tween ... -
(转)android listview滑动时加载(动态加载)
2011-07-28 16:18 1821如果adapter中的数据量很大的时候,在加载listv ... -
Android-Intent和PendingIntent的关系
2011-07-28 16:03 1031本文转自:http://yinter.iteye.com/bl ... -
Broadcast Receiver处理广播事件
2011-07-28 13:56 2596本实例介绍自定义Broadcast Receiver和系统 ... -
Service实例
2011-07-28 10:04 961下面通过一个实例演示如何创建、启动、停止及绑定一个Servic ... -
菜单Menu
2011-07-27 17:07 940本实例主要介绍了android中的一些菜单,Android系 ... -
ListView组件与SimpleAdapter
2011-07-27 16:34 2006记录两个ListView的简单小例子.其中使用到 了Simpl ... -
WebView与ProgressDialog结合
2011-07-27 16:18 3189WebView组件支持直接加载网页,可以将其视为一个浏览器,要 ...
相关推荐
在Java下连接SQLite数据库 一、下载SQLite数据库的JDBC:http://www.zentus.com/sqlitejdbc/ 二、将下载到的包解压后得到jar包放到%JAVA_HOME%\lib下,并且将其添加到ClassPath系统环境变量中。一定要保证在类路径...
在IT行业中,数据库管理是至关重要的,而SQLite作为一款轻量级、自包含的数据库引擎,因其高效性和易用性而被广泛应用。本教程将详细讲解如何在Delphi环境中使用ASqlite3控件连接并操作SQLite数据库。ASqlite3是一款...
在标题"sqlite-autoconf.tar.gz_sqlite_sqlite 加密_sqlite3autoconf_wxsqlite"中,我们可以看到与 SQLite 相关的几个关键点:加密、sqlite3autoconf 和 wxSQLite。 1. **SQLite 加密**: SQLite 提供了一个可选的...
SQLite是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作...
SQLite是一款开源、轻量级的嵌入式数据库引擎,它被广泛应用于移动设备、桌面系统以及Web应用程序。作为一款自包含、无服务器、零配置、事务性的SQL数据库,SQLite具有高度的可移植性和可靠性,无需数据库管理员即可...
SQLite是一种轻量级的、开源的关系型数据库管理系统,它不需要单独的服务器进程,可以直接嵌入到应用程序中使用,因此在移动设备和小型应用系统中非常流行。SQLite3是SQLite的第三个主要版本,提供了更高的性能、...
标题提到的"sqlite3文件"主要包括三个关键组成部分:`sqlite3.dll`、`sqlite3.h`和`sqlite3.lib`,它们在开发和运行使用SQLite3的应用程序时起着至关重要的作用。 1. `sqlite3.dll`: 这是一个动态链接库文件,通常...
SQLite是一款轻量级的、开源的关系型数据库管理系统,它不依赖于任何服务器进程,可以直接嵌入到各种应用程序中。SQLite以其高效、可靠性和易用性而广受开发者喜爱,尤其适用于移动设备和嵌入式系统。这个压缩包包含...
### SQLiteODBC 驱动 SQLite3:深入解析与应用指南 #### 一、SQLiteODBC简介 SQLiteODBC是一种连接SQLite数据库与支持ODBC(开放式数据库连接)的应用程序之间的桥梁。通过SQLiteODBC,开发人员可以利用ODBC标准...
SQLite是一款开源、轻型的数据库管理系统,被广泛应用于嵌入式设备、移动应用以及服务器端。标题中的"sqlite 比较稳定的版本"指的是SQLite的一个特定版本,该版本经过广泛的测试和验证,具有较高的稳定性和较低的...
SQLite3.exe 是 SQLite 数据库引擎的一个命令行接口工具,它允许用户通过文本命令与 SQLite 数据库进行交互。SQLite 是一个开源、轻量级、自包含的 SQL 数据库引擎,广泛应用于嵌入式系统和移动应用中,因为它无需...
网上很难下载到,分享给需要的:sqlite3odbc.dll 属性 文件版本 1.34455.0,0 产品名称 ODBC Driver for SQLite3 3.43.2 产品版本 0.99991 版权 Copyriglt @2004-2023 ,de> 大小 942 KB 修改日期 2023-10-23 21:50 ...
SQLite3 是一个开源的、轻量级的数据库引擎,它不需要独立的服务器进程,可以直接嵌入到各种应用程序中。SQLite3 提供了 SQL 标准兼容的数据库管理系统,广泛应用于移动设备、嵌入式系统以及桌面应用。在这个...
SQLite.Interop.dll for sqlite expert professional 4.2 用与SQLite Expert打开本地已加密的数据库的插件。适用32位和64位。 1.直接将下载的文件复制到SQLite Expert安装路径(如:c:\Program Files (x86)\SQLite ...
SQLite4Unity 是 Unity 中的一个 SQLite 数据库操作工具库,用于在 Unity 项目中访问 SQLite 数据库。它提供了许多可用于创建,查询和更新 SQLite 数据库的功能,而无需编写复杂的 SQL 查询语句。 SQLite4Unity 是...
SQLiteStudio-2.1.5 是一款专为SQLite数据库设计的高效、易用的管理工具。SQLite是一款开源、轻量级、自包含的SQL数据库引擎,广泛应用于移动设备、嵌入式系统以及桌面应用程序中。SQLiteStudio作为其配套的图形界面...
Sqlite是一种轻量级的、开源的嵌入式数据库,广泛应用于各种跨平台的应用程序中,尤其是对于那些不需要服务器环境或者需要快速数据存储的应用。在C#编程中,与Sqlite交互通常需要借助特定的库,例如System.Data....
在本主题中,我们关注的是SQLite的核心组件——`sqlite3.h`、`sqlite3.lib`和`sqlite3.dll`,这些是开发过程中用于与SQLite交互的关键文件。 1. **sqlite3.h**: 这是一个头文件,包含了SQLite的所有公共API(应用...
一款绿色的SQLite文件查看编辑器,支持SQL语句,直接解压后运行文件夹里面的SQLiteDatabaseBrowserPortable.exe即可运行,打开文件时文件类型选择所有类型,内附简单的使用方法,配合i4等苹果手机助手可以方便得将...
SQLite是一个开源的关系型数据库管理系统,它以C语言编写,被广泛应用于嵌入式系统和移动应用中。在你提供的"sqlite3lib.rar"压缩包中,包含的是SQLite的一个特定版本——sqlite-amalgamation-3430100的编译结果。这...