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 ...
随机推荐
- oracle基础入门(四)
一:其实oracle的语法跟sql servce 挺像的只有一些个别的差异而已 1):安装Oracle的数据库一般它的表中会自带了两站表: 是 emp(员工表) , dept(部门) 单表查询 sel ...
- Java基础学习总结(18)——网络编程
一.网络基础概念 首先理清一个概念:网络编程 != 网站编程,网络编程现在一般称为TCP/IP编程. 二.网络通信协议及接口 三.通信协议分层思想 四.参考模型 五.IP协议 每个人的电脑都有一个独一 ...
- IDEA使用技巧汇总
使用IDEA也有一段时间了,今天又看到了一个不错的IDEA视频,觉得对IDEA熟悉得更多了,在这里做下笔记,如下 视频链接:https://www.imooc.com/video/16219 1.下载 ...
- 杭电 HDU ACM 2795 Billboard(线段树伪装版)
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 对照 Android 的 Intent 与 iOS StoryBoard 的 Segue - Intent 假设也能添加个prepareForSegue回调就好了
对照 Android 的 Intent 与 iOS StoryBoard 的 Segue - Intent 假设也能添加个prepareForSegue回调就好了 太阳火神的漂亮人生 (http:// ...
- vim使用(二):经常使用功能
1. vim经常使用功能 vim的经常使用功能.包含块的选择.复制,多文件的编辑.多窗体等功能. 2. vim块选择 块选择是将文档中的一块能够选择复制,粘贴,不用整行的处理. 按下 v , V . ...
- c++动态库中使用命名空间的问题
这是C++才会有的语言特性. 假如你使用一个程序库,他里面有桓霰淞拷衋bc,可是你自己也不小心定义了一个叫abc的变量,这样就会引起重定义错误.所以为了避免这样的现象,C++引入了名字空间(names ...
- CodeForces 570B Simple Game 概率
原题: http://codeforces.com/contest/570/problem/B 题目: Simple Game time limit per test1 second memory l ...
- double long float类型读入读出 double取模 fmod
The library of fmod is #include <cmath> #include<cstdio> #include<cstdlib> #includ ...
- 如何在 Linux 上安装应用程序
如何在 Linux 上安装应用程序 编译自:https://opensource.com/article/18/1/how-install-apps-linux作者: Seth Kenlon原创:LC ...