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

时间: 2024-11-06 01:06:10

SQlite-数据库的访问实例(转)的相关文章

SQLite数据库--C#访问加密的SQLite数据库

前提:一个项目需要存储各种密码数据,使用的嵌入式的SQLite数据库.默认的SQLite数据库是没有加密的,这样相当不安全.找呀找呀找方法... 方法: 1.使用SQLite管理器加密. 部分SQLite管理器是有对SQLite数据库有加密功能的.本小菜使用的是:SQLite Developer管理工具.加密如下:        密码就设置OK了. 2.C#访问SQLite带密码的数据库 首先说说,不带密码的SQLite访问字符串格式,只需写入数据库所在路径即可: string ConnStr=

安卓 SQLite数据库操作实例

前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tc

在安卓开发中使用SQLite数据库操作实例

前段时间写了个安卓平台下SQLite数据库操作的实例 ,一直没得时间总结 ,今天把它弄出来了. 在Android 运行时环境包含了完整的 SQLite. 首先介绍一下SQLite这个数据库: SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tc

android之SQLite数据库应用(二)

今天让我们总结下SQLite数据库在android系统中的应用.首先来看一些数据库的介绍: SQLite数据库是一种无类型的数据库,这就代表你可以保存任何类型的数据到任何表中的任何列哦,无论这个表在create的时候该列被声明成什么类型.因为SQLite在执行数据库建表语句的时候,会自动的将类型忽略的哦. 它是一种用C语言编写的嵌入式数据库,它是一个轻量级的数据库,在一些基础简单的语句处理上要比oracle/mysql快很多,而且其对内存的要求很低. 注意:这里一定要注意,SQLite数据库在一

数据存储与访问之——初见SQLite数据库

      本节引言: 本节学习Android数据库存储与访问的第三种方式:SQLite数据库,和其他的SQL数据库不同,我们并不需要在手机上另外安装一个数据库手机软件,Android系统已经集成了这个数据库,我们无需像使用其他数据库软件(Oracle,MSSQL,MySql等)又要安装,然后完成相关配置,又要改端口之类的!       1.基本的概念 1)SQLite是什么?为什么要用SQLite?SQLite有什么特点? 答:下面本姑娘来为大家讲解 SQLite是一个轻量级的关系型数据库,运

C#使用 SQLite 数据库 开发的配置过程及基本操作类,实例程序:工商银行贵金属行情查看小工具

--首发于博客园, 转载请保留此链接  博客原文地址 本文运行环境: Win7 X64, VS2010 1. SQLite 的优点: SQLite 是一款轻型数据库,开发包只有十几M, 相对于 MSSQL 几个 G 的体积来说简直是小 Case, 而且在打包成的软件里只需要添加相关的 DLL 就可以在其他的电脑运行,这一点来说比 Access 数据库还要来得方便.  SQLite虽然很小巧,但是支持的SQL语句不会太逊色于其他开源数据库. 更多详情参见百科:SQLite 2. 开发包下载 SQL

无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.demo1" /> 上面targetPackage指定的包要和应用的package相同. (2)在清单文件中ap

php读取sqlite数据库入门实例

php读取sqlite数据库的例子,php编程中操作sqlite入门实例.原文参考:http://www.jbxue.com/article/php/22383.html在使用SQLite前,要确保php.ini中已经启用sqlite和pdo配置 打开PHP.INI文件,打下以下扩展:extension=php_pdo.dll extension=php_pdo_sqlite.dllextension=php_sqlite.dllsqlite_open命令是打开一个数据库文件. 如果没有文件则创

JDBC访问及操作SQLite数据库

SQLite 是一个开源的嵌入式关系数据库,其特点是高度便携.使用方便.结构紧凑.高效.可靠. 与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下,只要确保SQLite的二进制文件存在即可开始创建.连接和使用数据库.  SQLite的下载页面:http://www.sqlite.org/download.html window操作系统下载:sqlite-dll-win32-x86-3081002.zip及sqlite-shell-win32-x86-3081002.zi

【Android】13.0 第13章 创建和访问SQLite数据库&mdash;本章示例主界面

分类:C#.Android.VS2015: 创建日期:2016-02-26 一.简介 Android 内置了三种数据存取方式:SQLite数据库.文件.SharedPreferences. 这一章我们主要学习如何使用SQLite数据库存取数据. 1.SQLite是个什么档次的数据库 SQLite是一种免费的.开源的数据库,由于它独特的设计(把各种数据类型都转换为它自己内部处理的5种类型)导致其占用内存极少,因此很多项目都喜欢使用它. Android集成了SQLite并内置了专门对SQLite操作