- 浏览: 67511 次
- 性别:
- 来自: 上海
最新评论
-
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 10854做了个小例子,是关于android文件下载过程中进度条的实现, ... -
系统设置更改时间onConfigurationChanged
2011-08-13 12:15 1259在前一个例子中我们看到了屏幕方向的更改,事实上,当屏幕方向改变 ... -
android动态更改屏幕方向
2011-08-13 11:59 6625在androd中要通过程序改变屏幕显示的方向,必须覆盖setR ... -
Android - LayoutInflater 的使用
2011-08-05 09:10 940LayoutInflater is used to insta ... -
使用Shader渲染图形
2011-07-29 17:29 1511public class ShaderActivity ext ... -
android动画
2011-07-29 15:45 1212在Android系统中系统了两种动画实现方式:一种是Tween ... -
(转)android listview滑动时加载(动态加载)
2011-07-28 16:18 1777如果adapter中的数据量很大的时候,在加载listv ... -
Android-Intent和PendingIntent的关系
2011-07-28 16:03 991本文转自:http://yinter.iteye.com/bl ... -
Broadcast Receiver处理广播事件
2011-07-28 13:56 2556本实例介绍自定义Broadcast Receiver和系统 ... -
Service实例
2011-07-28 10:04 923下面通过一个实例演示如何创建、启动、停止及绑定一个Servic ... -
菜单Menu
2011-07-27 17:07 912本实例主要介绍了android中的一些菜单,Android系 ... -
ListView组件与SimpleAdapter
2011-07-27 16:34 1960记录两个ListView的简单小例子.其中使用到 了Simpl ... -
WebView与ProgressDialog结合
2011-07-27 16:18 3152WebView组件支持直接加载网页,可以将其视为一个浏览器,要 ...
相关推荐
在Java下连接SQLite数据库 一、下载SQLite数据库的JDBC:http://www.zentus.com/sqlitejdbc/ 二、将下载到的包解压后得到jar包放到%JAVA_HOME%\lib下,并且将其添加到ClassPath系统环境变量中。一定要保证在类路径...
网上很难下载到,分享给需要的: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 ...
SQLite.Interop.dll for sqlite expert professional 4.2 用与SQLite Expert打开本地已加密的数据库的插件。适用32位和64位。 1.直接将下载的文件复制到SQLite Expert安装路径(如:c:\Program Files (x86)\SQLite ...
一款绿色的SQLite文件查看编辑器,支持SQL语句,直接解压后运行文件夹里面的SQLiteDatabaseBrowserPortable.exe即可运行,打开文件时文件类型选择所有类型,内附简单的使用方法,配合i4等苹果手机助手可以方便得将...
基于sqlite3的加密版本的数据库动态链接库,附lib和.h头文件,新测试可用。可设置密码和修改密码,加密后的数据库文件是无法被打开的。官方提供的免费版本sqlite3都是没有加密的,官方收费的很贵哦,有需要的朋友...
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 就像其他数据库,SQLite 引擎不是一个...
SQLite.Interop.dll for sqlite expert professional 4.2 用与SQLite Expert打开本地已加密的数据库的插件。1.将SQLite.Interop.dll x86拷贝到SQLite Expert安装路径(如:x:\Program Files (x86)\SQLite Expert\...
qlite数据库远程管理器,只要在SQLITE数据文件所在目录下运行SQLITE3SERVER服务器程序就可以在于之联网的机器管理SQLITE数据库。可同时管理多台SQLITE数据库服务器。 实现的功能如下: 1、可列出远程SQLITE数据库...
1、获取sqlite3.dll,去网上下载wxsqlite3的最新版本代码,解压后其中有一个sqlite3目录,其中有编译好的版本,lib目录下的是原版本,secure目录下有aes128和aes256两个带加密的版本,直接拿其中任一个sqlite3.dll...
DB Browser for SQLite(DB4S) 是一个高质量、可视化、开源的工具,用于创建、设计和编辑与SQLite兼容的数据库文件。 为想要创建、搜索和编辑数据库的用户和开发人员而设计的。DB Browser for SQLite(DB4S) 使用一个...
SQLite官方下载只提供给我们一个sqlite3.dll跟一个sqlite3.def文件,并没有提供用于VC++6.0的lib文件,可以利用sqlite3.def文件生成(此文档已生成了,可以直接使用),步骤如下: 1.将sqlite3.h(D:\sqlite-...
文件列表:1)sqlite3.h;2)sqlite3.lib;3)sqlite3.dll; 学习VS2010/MFC下数据库编程已经有一段时间了,大多是在网站上浏览一些资源,这些资源大多以VC6.0位开发环境,而在VS2010下往往出现问题,所幸看到了...
赠送jar包:sqlite-jdbc-3.15.1.jar; 赠送原API文档:sqlite-jdbc-3.15.1-javadoc.jar; 赠送源代码:sqlite-jdbc-3.15.1-sources.jar; 赠送Maven依赖信息文件:sqlite-jdbc-3.15.1.pom; 包含翻译后的API文档:...
今天在向Sqlite数据库里... 您可能感兴趣的文章:SQLite教程(八):命令行工具介绍SQLite教程(十二):锁和并发控制详解SQLite教程(十四):C语言编程实例代码(2)python查询sqlite数据表的方法SQLite之Autoincre
网上大多关于SQLITE3数据文件的加密与解密都是欲言由止,近期因要开发关于SQLITE3数据库类型的软件,做了一下研究。用D7写了这样一个工具。支持SQLITE3数据文件的批量加密与解密。工具自身不依赖SQLITE3.DLL动态库,...
本文实例讲述了C#操作SQLite数据库之读写数据库的方法。分享给大家供大家参考,具体如下: 这里演示读写数据库并在窗体(Form)中显示其数据,其方式为: 读: Database(SQLite) -> DataAdapter -> DataSet -> ...
赠送jar包:sqlite-jdbc-3.34.0.jar; 赠送原API文档:sqlite-jdbc-3.34.0-javadoc.jar; 赠送源代码:sqlite-jdbc-3.34.0-sources.jar; 赠送Maven依赖信息文件:sqlite-jdbc-3.34.0.pom; 包含翻译后的API文档:...
Delphi7调用sqlite数据库实例,包含2个pas文件,一个dll文件,调用代码介绍,最全最实用最简单的Delphi7调用sqlite数据库资源. Delphi7调用SQLite数据库使用方法: 1. 在项目中添加SQLite3.pas、SQLiteTable3.pas这2...
简单整合32位SQLite跟64位SQLite,项目属性设置为anycpu的时候不会再有烦人的编译平台不同的提示,sqlite会自动根据系统的位数,而选择相应的版本。 同时还阔以解决System.DllNotFoundException: 无法加载 DLL...
基于Django3.0.5+Python3.7+SQLite的博客系统源码 基于Django3.0.5+Python3.7+SQLite的博客系统源码 基于Django3.0.5+Python3.7+SQLite的博客系统源码 基于Django3.0.5+Python3.7+SQLite的博客系统源码 基于...