- 浏览: 720128 次
- 性别:
- 来自: 大连
文章分类
- 全部博客 (204)
- spring (6)
- hibernate (8)
- struts2 (8)
- J2SE (6)
- J2EE (4)
- DataBase (8)
- JQuery (4)
- AJAX (1)
- android (18)
- 软件工程 (3)
- MyEclipse (2)
- 生活 (4)
- QT (1)
- IT (3)
- java综合 (3)
- About PC (2)
- eclipse (3)
- linux (8)
- english (2)
- iPhone (1)
- struts2标签详解 (1)
- 数据库设计准则(第一、第二、第三范式说明) (1)
- DateUtils类提供日期的处理方法 (1)
- 网络 (2)
- 算法 (1)
- java (2)
- OS (1)
- DAO (1)
- WEB (1)
- WebServices (1)
- oracle (1)
- MYSQL (1)
- hadoop (4)
- spark (41)
- scala (8)
- jetty (1)
- news (2)
- maven (1)
- clover (1)
- zookeeper (1)
- hbase (2)
- 微信 (1)
- hive (4)
- zeppelin (2)
- tachyon (2)
最新评论
-
lixuanbin:
iteye已经快要tj了吧。。
iteye为什么不支持markdown? -
haorengoodman:
Tachyon 能在做数据分类吗?例如我有一坨hdfs文件,将 ...
tachyon与hdfs,以及spark整合 -
lee3836:
求源码,大牛
clover分布式任务调度系统 -
cfan37:
...
sparksql与hive整合 -
greemranqq:
9.9 送上,希望博客长久~。~
【【【【【#####>>>>>【关于我】【您·的·支·持·是·我·最·大·的·动·力】<<<<<#####】】】】】
每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库 --大名鼎鼎的SQLite。SQLite是一款轻量级数据库,它的设计目的是嵌入式,而且它占用的资源非常少,在嵌入式设备中,可能只需要几百KB,这也是 Android 系统采用 SQLite 数据库的原因之一吧。
简介
* 轻量级
使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。
* 独立性
SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
* 隔离性
SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。
* 跨平台
SQLite 目前支持大部分操作系统,不至电脑操作系统更在众多的手机系统也是能够运行,比如:Android。
* 多语言接口
SQLite 数据库支持多语言编程接口。
* 安全性
SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。
继承 SQLiteOpenHelper 类实现的 DBRouteHelper 类。
package com.stark.itqs.util;
import android.content.ContentValues;
import android.content.Context;
import android.content.pm.FeatureInfo;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.text.format.Time;
/**
* SQLite工具类 用于数据库表的增删改查操作
* @author WangYue
* @date 2010-3-26
*/
public class DBBusHelper extends SQLiteOpenHelper {
//定义常量信息
private final static String DATABASE_NAME="itqs"; //数据库名称
private final static int DATABASE_VERSION=1; //数据库版本号
private final static String TABLE_NAME="route"; //数据库中表名称
public final static String FIELD_PID="pid"; //route表中pid字段 用于标识父类编号
public final static String FIELD_ID="id"; //route表中id字段 用于标识表中编号
public final static String FIELD_NAME="name"; //站点名称
public final static String FIELD_ARRIVAL_TIME="arrival_time"; //到达该站的时间
public final static String FIELD_TRALVEL_TIME="travel_time"; //距下一站的时间
/**
* 构造函数
* @param context
*/
public DBBusHelper(Context context)
{
/*
* 第一个参数(context):to use to open or create the database
* 第二个参数(name):of the database file, or null for an in-memory database
* 第三个参数(factory):to use for creating cursor objects, or null for the default
* 第四个参数(version):number of the database (starting at 1); if the database is older, onUpgrade(SQLiteDatabase, int, int) will be used to upgrade the database
*/
super(context, DATABASE_NAME,null, DATABASE_VERSION);
}
/**
* 创建数据库方法
*/
@Override
public void onCreate(SQLiteDatabase db) {
//创建数据库语句
String sql="Create table "+TABLE_NAME+"("+FIELD_ID+" integer primary key autoincrement,"
+FIELD_PID+" integer,"
+FIELD_NAME+"varchar(20)"
+FIELD_ARRIVAL_TIME+"varchar(20)"
+FIELD_TRALVEL_TIME+" varchar(20) );";
//执行创建表
db.execSQL(sql);
}
/**
* 更新数据库表操作
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//数据库语句
String sql=" DROP TABLE IF EXISTS "+TABLE_NAME;
//执行数据库语句操作
db.execSQL(sql);
//更新SQLiteDatabase
onCreate(db);
}
/**
* 查询数据方法
* @return Cursor
*/
public Cursor select()
{
//取得SQLiteDatabase
SQLiteDatabase db=this.getReadableDatabase();
//取得Cursor游标,根据字段id升序查询
/**
* 第一个参数:表明
* 第二个参数:结果集列表列中显示的字段。null:表示全部显示;String[] columns:你想显示的字段
* 第三个参数:返回结果中行数。null:表示全部显示;String selection:指定显示的行数
* 第四个参数:?占位符,用于替换value是中的值。null:表示禁止?占位符;String[] selectionArgs:指定?占位符
* 第五个参数:是否将行分组显示。null:不分组;String groupBy:分组
* 第六个参数:分组条件。null:代表没有分组条件;String having:分组条件
* 第七个参数:行显示顺序(升序|降序)。null:表示使用默认的排序方式;String orderBy:具体排序方式。
*/
Cursor cursor=db.query(TABLE_NAME,null, null, null, null, null, "id asc");
//返回从cursor
return cursor;
}
/**
* 插入数据方法
* @param pid 父编号
* @param name 站点名称
* @param arrival_time 到达时间
* @param travel_time 距下一站的时间
* @return rowNumber 返回所插入的行数
*/
public long insert(Integer pid,String name,String arrival_time,String travel_time )
{
//取得SQLiteDatabase
SQLiteDatabase db=this.getWritableDatabase();
//创建ContentValues,用于存放插入字段信息
ContentValues cv=new ContentValues();
//将字段信息放入发哦ContentValue中
cv.put(FIELD_PID, pid);
cv.put(FIELD_NAME, name);
cv.put(FIELD_ARRIVAL_TIME, arrival_time);
cv.put(FIELD_TRALVEL_TIME, travel_time);
//执行插入操作
/**
* 第一个参数:表名
* 第二个参数:如果初始化值为空时,就将该设置成null。
* 第三个参数:ContentValues
*/
long rowNumber=db.insert(TABLE_NAME, null, cv);
return rowNumber;
}
/**
* 删除方法
* @param pid
* @param id
*/
public void delete(int pid,int id)
{
//取得SQLiteDatabase对象
SQLiteDatabase db=this.getWritableDatabase();
//删除条件(利用占位符?操作)
String where=FIELD_ID+"=?,"+FIELD_PID+"=?";
//删除条件参数
String[] whereValue={Integer.toString(id),Integer.toString(pid)};
//执行删除操作
/**
* 第一个参数:表名称
* 第二个参数:SQL条件 需用利用占位符?操操作
* 第三个参数:SqL条件参数
*/
db.delete(TABLE_NAME, where, whereValue);
}
/**
* 更新方法
* @param id
* @param pid
* @param name
* @param arrival_time
* @param travel_time
* @return rowNumber 返回所插入的行数
*/
public long update(Integer id,Integer pid,String name,String arrival_time,String travel_time )
{
//取得SQLiteDatbase对象
SQLiteDatabase db=this.getWritableDatabase();
//SQL语句更新条件 ,利用占位符?
String where=FIELD_ID+"=?";
//设置SQL更新条件参数
String[] whereValue={Integer.toString(id)};
//创建ContentValues对象 ,用于存储更新的字段信息
ContentValues cv=new ContentValues();
//将所要更新的信息放入到cv对象中
cv.put(FIELD_PID, id);
cv.put(FIELD_NAME, name);
cv.put(FIELD_ARRIVAL_TIME,arrival_time);
cv.put(FIELD_TRALVEL_TIME, travel_time);
//执行更新操作
/**
* 第一个参数:表名称
* 第二个参数:ContentValues
* 第三个参数:SQL where条件
* 第四个参数:SQL where 条件参数
*/
long rowNumber=db.update(TABLE_NAME, cv, where, whereValue);
return rowNumber;
}
}
PS:
1,如果进入onCreate()函数,不存在此数据库则创建,如果存在此数据库则打开连接,只要进入此方法就可以用打开的连接获得getWritableDatabase()或getReadableDatabase()这两个方法。
2, ContentValue 其实可就是一个 HashTable,Key值是字段名称,Value 值是字段的值。通过 ContentValues 的put 方法就可以把数据库放到 ContentValue 对象中,然后插入到表中去。
3,在 Android 中查询数据是通过 Cursor 类来实现的,当我们使用SQLiteDatabase.query()方法时,会得到一个Cursor对象,Cursor指向的就是每一条数据。它提供了很多有关查询的方法,具体截图如下:
简介
* 轻量级
使用 SQLite 只需要带一个动态库,就可以享受它的全部功能,而且那个动态库的尺寸想当小。
* 独立性
SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
* 隔离性
SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。
* 跨平台
SQLite 目前支持大部分操作系统,不至电脑操作系统更在众多的手机系统也是能够运行,比如:Android。
* 多语言接口
SQLite 数据库支持多语言编程接口。
* 安全性
SQLite 数据库通过数据库级上的独占性和共享锁来实现独立事务处理。这意味着多个进程可以在同一时间从同一数据库读取数据,但只能有一个可以写入数据。
继承 SQLiteOpenHelper 类实现的 DBRouteHelper 类。
package com.stark.itqs.util;
import android.content.ContentValues;
import android.content.Context;
import android.content.pm.FeatureInfo;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.text.format.Time;
/**
* SQLite工具类 用于数据库表的增删改查操作
* @author WangYue
* @date 2010-3-26
*/
public class DBBusHelper extends SQLiteOpenHelper {
//定义常量信息
private final static String DATABASE_NAME="itqs"; //数据库名称
private final static int DATABASE_VERSION=1; //数据库版本号
private final static String TABLE_NAME="route"; //数据库中表名称
public final static String FIELD_PID="pid"; //route表中pid字段 用于标识父类编号
public final static String FIELD_ID="id"; //route表中id字段 用于标识表中编号
public final static String FIELD_NAME="name"; //站点名称
public final static String FIELD_ARRIVAL_TIME="arrival_time"; //到达该站的时间
public final static String FIELD_TRALVEL_TIME="travel_time"; //距下一站的时间
/**
* 构造函数
* @param context
*/
public DBBusHelper(Context context)
{
/*
* 第一个参数(context):to use to open or create the database
* 第二个参数(name):of the database file, or null for an in-memory database
* 第三个参数(factory):to use for creating cursor objects, or null for the default
* 第四个参数(version):number of the database (starting at 1); if the database is older, onUpgrade(SQLiteDatabase, int, int) will be used to upgrade the database
*/
super(context, DATABASE_NAME,null, DATABASE_VERSION);
}
/**
* 创建数据库方法
*/
@Override
public void onCreate(SQLiteDatabase db) {
//创建数据库语句
String sql="Create table "+TABLE_NAME+"("+FIELD_ID+" integer primary key autoincrement,"
+FIELD_PID+" integer,"
+FIELD_NAME+"varchar(20)"
+FIELD_ARRIVAL_TIME+"varchar(20)"
+FIELD_TRALVEL_TIME+" varchar(20) );";
//执行创建表
db.execSQL(sql);
}
/**
* 更新数据库表操作
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//数据库语句
String sql=" DROP TABLE IF EXISTS "+TABLE_NAME;
//执行数据库语句操作
db.execSQL(sql);
//更新SQLiteDatabase
onCreate(db);
}
/**
* 查询数据方法
* @return Cursor
*/
public Cursor select()
{
//取得SQLiteDatabase
SQLiteDatabase db=this.getReadableDatabase();
//取得Cursor游标,根据字段id升序查询
/**
* 第一个参数:表明
* 第二个参数:结果集列表列中显示的字段。null:表示全部显示;String[] columns:你想显示的字段
* 第三个参数:返回结果中行数。null:表示全部显示;String selection:指定显示的行数
* 第四个参数:?占位符,用于替换value是中的值。null:表示禁止?占位符;String[] selectionArgs:指定?占位符
* 第五个参数:是否将行分组显示。null:不分组;String groupBy:分组
* 第六个参数:分组条件。null:代表没有分组条件;String having:分组条件
* 第七个参数:行显示顺序(升序|降序)。null:表示使用默认的排序方式;String orderBy:具体排序方式。
*/
Cursor cursor=db.query(TABLE_NAME,null, null, null, null, null, "id asc");
//返回从cursor
return cursor;
}
/**
* 插入数据方法
* @param pid 父编号
* @param name 站点名称
* @param arrival_time 到达时间
* @param travel_time 距下一站的时间
* @return rowNumber 返回所插入的行数
*/
public long insert(Integer pid,String name,String arrival_time,String travel_time )
{
//取得SQLiteDatabase
SQLiteDatabase db=this.getWritableDatabase();
//创建ContentValues,用于存放插入字段信息
ContentValues cv=new ContentValues();
//将字段信息放入发哦ContentValue中
cv.put(FIELD_PID, pid);
cv.put(FIELD_NAME, name);
cv.put(FIELD_ARRIVAL_TIME, arrival_time);
cv.put(FIELD_TRALVEL_TIME, travel_time);
//执行插入操作
/**
* 第一个参数:表名
* 第二个参数:如果初始化值为空时,就将该设置成null。
* 第三个参数:ContentValues
*/
long rowNumber=db.insert(TABLE_NAME, null, cv);
return rowNumber;
}
/**
* 删除方法
* @param pid
* @param id
*/
public void delete(int pid,int id)
{
//取得SQLiteDatabase对象
SQLiteDatabase db=this.getWritableDatabase();
//删除条件(利用占位符?操作)
String where=FIELD_ID+"=?,"+FIELD_PID+"=?";
//删除条件参数
String[] whereValue={Integer.toString(id),Integer.toString(pid)};
//执行删除操作
/**
* 第一个参数:表名称
* 第二个参数:SQL条件 需用利用占位符?操操作
* 第三个参数:SqL条件参数
*/
db.delete(TABLE_NAME, where, whereValue);
}
/**
* 更新方法
* @param id
* @param pid
* @param name
* @param arrival_time
* @param travel_time
* @return rowNumber 返回所插入的行数
*/
public long update(Integer id,Integer pid,String name,String arrival_time,String travel_time )
{
//取得SQLiteDatbase对象
SQLiteDatabase db=this.getWritableDatabase();
//SQL语句更新条件 ,利用占位符?
String where=FIELD_ID+"=?";
//设置SQL更新条件参数
String[] whereValue={Integer.toString(id)};
//创建ContentValues对象 ,用于存储更新的字段信息
ContentValues cv=new ContentValues();
//将所要更新的信息放入到cv对象中
cv.put(FIELD_PID, id);
cv.put(FIELD_NAME, name);
cv.put(FIELD_ARRIVAL_TIME,arrival_time);
cv.put(FIELD_TRALVEL_TIME, travel_time);
//执行更新操作
/**
* 第一个参数:表名称
* 第二个参数:ContentValues
* 第三个参数:SQL where条件
* 第四个参数:SQL where 条件参数
*/
long rowNumber=db.update(TABLE_NAME, cv, where, whereValue);
return rowNumber;
}
}
PS:
1,如果进入onCreate()函数,不存在此数据库则创建,如果存在此数据库则打开连接,只要进入此方法就可以用打开的连接获得getWritableDatabase()或getReadableDatabase()这两个方法。
2, ContentValue 其实可就是一个 HashTable,Key值是字段名称,Value 值是字段的值。通过 ContentValues 的put 方法就可以把数据库放到 ContentValue 对象中,然后插入到表中去。
3,在 Android 中查询数据是通过 Cursor 类来实现的,当我们使用SQLiteDatabase.query()方法时,会得到一个Cursor对象,Cursor指向的就是每一条数据。它提供了很多有关查询的方法,具体截图如下:
发表评论
-
解决Spinner不能在Tabhost中使用
2011-04-09 13:06 2585本想昨天晚上写这篇文章,但是我学校的网络真的太不给力了呢!竟然 ... -
Android屏幕分辨率详解(VGA、HVGA、QVGA、WVGA、WQVGA)
2011-03-31 20:44 1885这些术语都是指屏幕的分辨率。 VGA:Video Graph ... -
Android中Java代码和XML布局效率问题
2011-03-30 23:03 3345一般情况下对于Android程序布局我们往往使用XML文件来编 ... -
我服了android APIDemos中的带输入框的对话框
2011-03-28 20:59 2821我今天满怀信心的将AlertDialogSamples类看了很 ... -
Eclipse 安装 Google Android 插件
2011-03-27 15:33 1755已经在EclipseIDE编写android手机软件很长时间了 ... -
关于android的Menu理解
2011-03-26 13:23 1268任何一款软件都少不了 ... -
转载 国内Android 市场调查
2011-03-25 14:46 1476原文地址: http://www.cnbeta.com/art ... -
Android模拟器创建和管理sdcard image文件
2011-03-25 14:23 2504PS:以下操作都是在window系统 1:创建sdcard.i ... -
Android application context/activity context与内存泄露
2011-03-25 00:47 1771在android中context可以作很多操作,但是最主要的功 ... -
Android基础概念Context的作用
2011-03-25 00:42 1753Context字面意思上下文,位于framework pack ... -
Android布局java代码实现求助
2011-03-24 23:39 2429一般情况下对于Android程序布局我们往往使用XML文件来编 ... -
Laucher AndroidManifest.xml
2011-03-23 23:01 11591. permission 和 uses-permission ... -
RelativeLayout的理解
2011-03-23 22:49 1469一、概述 在开发中推荐尽量使用RelativeLayo ... -
windows下通过 DOS命令打开android模拟器实力
2011-03-23 22:29 1943步骤一:打开DOS窗口(cmd),并输入命令,进入文件夹: D ... -
Android预定义样式
2011-03-23 16:04 16921、字体大小 对于能够显示文字的控件(如TextView E ... -
通过适配器给AdapterView绑定数据
2011-03-23 15:39 4616使用AdapterView来绑定数据 AdapterView ... -
android的第一天学习
2011-03-10 22:19 13281:Android中TextView中的字体大小能设置吗? ...
相关推荐
react-native-sqlite-storage SQLite3 Native Plugin for React Native for both Android (Classic and Native) and iOS Inspired by fantastic work done by Chris Brody I did not want to re-invent the wheel. ...
android-database-sqlcipher-4.4.0和sqlite-2.1.0 官网下载太慢了,还总是下不下来,终于下载下来就分享出来。 安装清参考博客:https://blog.csdn.net/zdwcmy/article/details/106990422
这个压缩包"Android高级应用源码-AndroidInject增加sqlite3数据库映射注解(ORM).zip"提供了一个示例,展示了如何在Android项目中使用SQLite3数据库,并通过ORM(对象关系映射)技术来简化数据库操作。ORM允许开发者...
这个压缩包"Android高级应用源码-AndroidInject增加sqlite3数据库映射注解(ORM).rar"提供了一个示例,展示了如何在Android项目中使用SQLite3数据库,并结合ORM(对象关系映射)技术,通过注解的方式简化数据库操作。...
java项目之JSP_JTBC_CMS(SQLITE)源码java项目之JSP_JTBC_CMS(SQLITE)源码java项目之JSP_JTBC_CMS(SQLITE)源码java项目之JSP_JTBC_CMS(SQLITE)源码java项目之JSP_JTBC_CMS(SQLITE)源码java项目之JSP_JTBC_CMS(SQLITE)...
首先,我们需要在Android项目中创建一个SQLite数据库。这通常通过继承`SQLiteOpenHelper`类来完成。`SQLiteOpenHelper`有两个关键的方法:`onCreate()`和`onUpgrade()`。`onCreate()`方法在数据库首次创建时调用,...
首先,我们需要在Android项目中创建一个SQLite数据库。这通常通过实现`SQLiteOpenHelper`的子类来完成。`SQLiteOpenHelper`负责创建、升级和管理数据库。在这个子类中,我们需要重写`onCreate()`方法来创建数据库的...
Android学习笔记-SQLite介绍-以及使用Sqlite-进行数据库的创建-完成数据.pdf
在压缩包`requery-sqlite-android-2209ef4`中,可能包含了`sqlite-android`的特定版本源码或者库文件,开发者可以研究源码以了解更多底层实现细节,或者直接将库文件集成到项目中使用。 总之,`sqlite-android`是一...
总的来说,这个资料包为Android开发者提供了一个深入了解SQLite的机会,无论是从理论层面的文档学习,还是实践层面的源码分析,都能帮助开发者提高在Android平台上使用SQLite的技能,从而编写出更加高效和可靠的...
android-database-sqlcipher-4.4.0、sqlite-2.1.0
在本文中,我们将深入探讨如何使用C#进行WinForm应用程序开发,特别关注如何构建一个SQLite加密程序。SQLite是一个轻量级、开源的关系型数据库,它被广泛用于桌面应用和嵌入式系统,因为它无需服务器进程即可运行。...
开源项目-cznic-sqlite3shell.zip,sqlite3shell is a mechanically produced Go port of shell.c, part of the SQLite project
这个压缩包文件“Android 项目源码-备忘录(附源码).zip”包含了一个基于Android开发的备忘录应用的完整源代码。这是一个非常实用的学习资源,特别是对于那些正在学习Android开发或者需要进行课程设计、毕业设计...
这是基于android开发的学生信息管理系统,包括学生的增加、...除此之外,该系统应用到了手机内置的sqlite数据库来进行数据的存储,所以,是学生学习android的一次不错的选择,应用工具androidStudio,编写语言,java
《Android项目源码:考勤助手的深度解析与实践》 在移动开发领域,Android作为全球最广泛使用的操作系统之一,其应用开发需求日益增长。尤其是对于学习和实践Android开发的学生和开发者,拥有一个完整的项目源码是...
在使用"android-sqlite-encrypt"时,首先需要在项目中引入相应的依赖,这通常通过Gradle构建系统来完成。添加依赖后,创建和打开数据库的方式与未加密的SQLite数据库类似,但在初始化时需要提供一个预共享密钥,这个...
这个"Android高级应用源码-超简单的SQLite的使用.zip"压缩包可能包含了一个简单的Android应用示例,展示了如何在应用程序中集成SQLite来管理数据。下面我们将详细探讨SQLite在Android中的使用以及相关知识点。 首先...
这个压缩包"Android高级应用源码-Android轻量级sqlite orm框架.zip"很可能包含了一个适用于Android的轻量级SQLite ORM框架的示例代码,帮助开发者理解如何在Android应用中高效地使用SQLite。 首先,我们来深入理解...
在`anysql-cordova-sqlite-master`压缩包中,可能包含示例代码、README文件以及库的源代码,可以帮助开发者更好地理解和使用这个库。 总的来说,`anysql-cordova-sqlite`是前端开发者在构建Cordova应用时,处理本地...