SQlite-数据库的访问实例(转)
1、DBAdapter类: 1 package com.cnzcom.android.quickdial; import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log; /**
*
* @author zhangjie
*
* 数据库相关操作的类
*/
public class DBAdapter {
/**
* 数据库名
*/
private static final String DATABASE_NAME = "quickdial.db"; /**
* 数据表名
*/
private static final String DATABASE_TABLE = "quickdial"; /**
* 数据库版本
*/
private static final int DATABASE_VERSION = 1; /**
* key_id :主键
*/
@SuppressWarnings("unused")
private static final String KEY_ID = "key_id"; /**
* position :位置信息,表示数据是第几项
*/
private static final String POSITION = "position"; /**
* name :姓名
*/
private static final String NAME = "name"; /**
* phone_number :电话号码
*/
private static final String PHONE_NUMBER = "phone_number"; /**
* ip :是否ip播出
*/
private static final String IP = "ip"; /**
*
*/
private static final String DATABASE_CREATE =
"create table quickdial (key_id INTEGER PRIMARY KEY, "
+ "position INTEGER, "
+ "name TEXT, "
+ "phone_number TEXT, "
+ "ip INTEGER"
+ ");"; /**
*
*/
private final Context context; /**
*
*/
private DatabaseHelper DBHelper; /**
*
*/
private SQLiteDatabase db; public DBAdapter(Context ctx) {
context = ctx;
DBHelper = new DatabaseHelper(context); } private static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
} @Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(DATABASE_CREATE);
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
onCreate(db);
} } /**
* 打开数据库
* @return
* @throws SQLException
*/
public SQLiteDatabase open() throws SQLException
{
db = DBHelper.getWritableDatabase(); Cursor cursor = getAll(); if(cursor.getCount() == 0) { Log.e("数据库为空", "插入数据");
/**
* 先使用假数据初始化数据库
*/
for(int i = 0; i < 10; i++) {
insert(i, "", "", 0);
}
} else {
Log.e("数据库不为空", "读取数据");
}
cursor.close(); return db;
} /**
* 关闭数据库
*/
public void close()
{
DBHelper.close();
} /**
* 向数据库中插入数据
*/ public long insert(int position, String name, String phone_number, int ip) { ContentValues initialValues = new ContentValues();
initialValues.put(POSITION, position);
initialValues.put(NAME, name);
initialValues.put(PHONE_NUMBER, phone_number);
initialValues.put(IP, ip); return db.insert(DATABASE_TABLE, null, initialValues);
} /**
* 删除数据,其实不是真正意义上的删除,而是将name = ""、phone_number = ""、ip = 0
*/
public boolean delete(int position) { ContentValues initialValues = new ContentValues();
initialValues.put(POSITION, position);
initialValues.put(NAME, "");
initialValues.put(PHONE_NUMBER, "");
initialValues.put(IP, 0); return db.update(DATABASE_TABLE, initialValues, POSITION + "=" + position, null) > 0; // return db.delete(DATABASE_TABLE, POSITION + "=" + position, null) > 0;
} /**
* 更改数据
*/
public boolean update(int position, String name, String phone_number, int ip) { ContentValues initialValues = new ContentValues();
//initialValues.put(POSITION, position);
initialValues.put(NAME, name);
initialValues.put(PHONE_NUMBER, phone_number);
initialValues.put(IP, ip); return db.update(DATABASE_TABLE, initialValues, POSITION + "=" + position, null) > 0;
} public Cursor getAll() { Cursor cur = db.query(DATABASE_TABLE,
null, null, null, null, null, null);
return cur; } public Cursor get(long rowId) throws SQLException {
Cursor cur = db.query(true, DATABASE_TABLE, new String[] {POSITION,
NAME,
PHONE_NUMBER,
IP}, POSITION + "=" + rowId, null, null, null, null, null); if(cur != null) {
cur.moveToFirst();
} return cur;
} } 2、Activity中调用:1 public DBAdapter m_DBAdapter; m_DBAdapter = new DBAdapter(this);
m_DBAdapter.open();
文章出处
http://www.cnblogs.com/Jackeyzhang/archive/2011/06/02/2068459.html
SQlite-数据库的访问实例(转)的更多相关文章
- 基于三层架构下的公共数据访问方法(Sqlite数据库)
作者总结了一下,使用Winform的三层架构做窗体应用程序,在数据访问方面,有用到纯sql语句方法.参数方法.存储过程方法. 那么什么是三层架构呢? UI---存放Form窗体---(用户所关心的) ...
- 安卓 SQLite数据库操作实例
前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...
- 在安卓开发中使用SQLite数据库操作实例
前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLi ...
- C#/Sqlite-单机Window 程序 sqlite 数据库实现
数据库分析和选择 Excel 文件 做数据源 限制性比较强,且不适合查询,分析 等操作 Access 数据库 Access 管理数据界面和功能不强 mysql 和sql server 功能满足,但需要 ...
- 数据存储与访问之——初见SQLite数据库
本节引言: 本节学习Android数据库存储与访问的第三种方式:SQLite数据库,和其他的SQL数据库不同,我们并不需要在手机上另外安装一个数据库手机软件,Android系统已经集成了这 ...
- 【Android】13.1 用Android自带的API访问SQLite数据库
分类:C#.Android.VS2015: 创建日期:2016-02-26 一.简介 这一节我们先来看看如何直接用Android自带的API创建和访问SQLite数据库. 1.创建SQLite数据库 ...
- android开发 如何通过web服务器访问MYSQL数据库并且使其数据同步到android SQLite数据库?
通过web服务器访问MYSQL数据库有以下几个过程: 1.在MySql下创建自己的数据库和自己的表单 2.连接数据库. 3.访问数据库 1.创建web工程 (服务器端) 在Myeclipse下新建一个 ...
- Qt5 开发 iOS 应用之访问 SQLite 数据库
开发环境: macOS 10.12.1 Xcode 8.1 Qt 5.8 iPhone 6S+iOS 10.1.1 源代码: 我在 Qt 程序里指定了数据库的名称来创建数据库,在 Win10.An ...
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...
- python-整理--sqlite数据库访问
python 自带sqlite3数据库访问模块. sqlite3 以下写一个数据库访问类 ''' 2016年2月5日 描述: 操作sqlite数据库的封装 主要功能: 将sqlite数据库数据转为py ...
随机推荐
- 【习题 8-18 UVA - 1619】Feel Good
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 用单调队列求出l[i]和r[i] 分别表示i的左边最近的大于a[i]的数的位置以及i右边最近的大于a[i]的数的位置. 则l[i]+ ...
- JDBC连接SQL Server 2005 报错Connection refused: connect
com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败.错误:“Connect ...
- ArcGIS api for javascript——地理编码任务-地理编码地址
描述 本例允许用户输入一个地址,然后显示匹配的地址的位置.这通常地被称为地理编码.在ArcGIS JavaScript API中,使用Locator类执行地理编码. 定位器构造函数需要ArcGIS S ...
- rgba
正反两面展示效果 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head& ...
- SQL Search
Press TAB to expand wildcard tab键之后,会自动展开,直接枚举表中所有的字段 根据名字查找存储过程,发现找不到 原因是,本地是一个备份库.服务器上通过sql source ...
- centos7 出现please make your choice from 1 to enter..
忘了截图了 刚出现的~~ 输入1 回车 输入q 回车 最后回车 便可以正常启动
- quartz 持久化 数据库表
此处只包括配置数据库操作 quartz 持久化数据库表格字段解释建表,SQL语句在dbTables文件夹中可以找到,介绍下我们开发主要使用到的表: (版本不一样,可能数据库表也不一样,这里使用2.2. ...
- 85.explicit作用
#include <iostream> using namespace std; class myclass { public: int num; public: explicit myc ...
- 紫书 例题 9-5 UVa 12563 ( 01背包变形)
总的来说就是价值为1,时间因物品而变,同时注意要刚好取到的01背包 (1)时间方面.按照题意,每首歌的时间最多为t + w - 1,这里要注意. 同时记得最后要加入时间为678的一首歌曲 (2)这里因 ...
- Android布局之RelativeLayout
RelativeLayout用到的一些重要的属性: 第一类:属性值为true或falseandroid:layout_centerHrizontal 水平居中android:layout_center ...