Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 808|回复: 0

[实例教程]Android-SQLite3 超基础入门

[复制链接]

该用户从未签到

发表于 2011-10-22 13:05:22 | 显示全部楼层 |阅读模式
背景
       SQLite 是一个非常流行的嵌入式数据库,它提供了一个清爽的 SQL 接口,相当小的内存占用和高速的响应,更 Happy 的是他还是免费的,大家都可以尽情的使用,很多牛叉的公司(诸如 Adobe,Apple,Google,Sun,Symbian ),开源项目( Mozilla,PHP,python )都在产品中装配 SQLite.



       Android 中, SQLite 是被集成于 Android runtime ,每个 Android 应用程序都可以欢快的使用 SQLite 数据库,如果你熟悉 JDBC ,那么这个过程就更安逸了。

SQLite3 特征
和传统关系数据库比较

有的:

       Sql 语句:      SELECT INSERT UPDATE

                            CREATE DROP

       数据类型:

              不区分大小写

              TEXT     文本

       NUMERIC 数值

       INTEGER 整型

       REAL     小数

       NONE     无类型

没有的:

       FOREIGN KEY 外键约束

    RIGHT OUTER JOIN 和 FULL OUTER JOIN

    ALTER TABLE

开始动手
动手之前,确认你的机器中已经配置好如下环境:

       Android 开发环境(怎么配置问 Google ,有很多)

       本文档适用环境 Android1.0

1, 建库

       方式一:命令行方式(适合调试用)

              可以使用 adb shell 进入设备后台,命令行方式手动创建,步骤如下:     

              Eclipse 中启动模拟器之后, cmd 下输入进入设备 Linux 控制台

              D:/>adb shell

              之后进入应用 data 目录

              # cd /data/data

              ls 列表目录,查看文件,找到你的项目目录并进入

              查看有无 databases 目录,如果没有,则创建一个

              # mkdir databases

              cd databases 进入并创建数据库

              # sqlite3 friends.db

              sqlite3 friends.db

              SQLite version 3.5.9

              Enter ".help" for instructions

              sqlite>

              ctrl+d 退出 sqlite 提示符 ls 列表目录会看到有一个文件被创建 friends.db

              他就是 SQLite 的库文件

              # ls

              ls

              friends.db

       方式二:编码方式(使用更多)

              android.content.Context 中提供了函数 , 注: Activity 是 Context 的子类

              openOrCreateDatabase () 来创建我们的数据库

              db = context .openOrCreateDatabase(

              String DATABASE_NAME , int Context. MODE_PRIVATE , null );

       String DATABASE_NAME   数据库的名字

       Int  MODE    操作模式   Context.MODE_PRIVATE 等

       CursorFactory 指针工厂 ,本例中传入 null ,暂不用

            

            

2, 建表

       命令行方式

       # sqlite3

       sqlite> create table widgets (id integer primary key autoincrement,name text);

3,  插入数据

       命令行 增加,查询数据

       sqlite> insert into widgets values(null,'tom');

       insert into widgets values(null,'tom');

       sqlite> select * from widgets;

       select * from widgets;

       1|tom

       sqlite>

      

       API 方式



调用 package com.demo.android.dummynote.tools;



import android.R;

import android.app.Activity;

import android.database.Cursor;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;



/**

* SQLite Demo

*

* 供Activity私有访问的数据库 没有使用ContentProvider 方式 增加 查询数据

*

* @author xzknet@gmail.com

*

*/

public class DbDemo extends Activity {

        EditText inputTxt;

        Button btnAdd;

        Button btnViewAll;

        TextView viewAll;



        DBHelper db;



        @Override

        protected void onCreate(Bundle savedInstanceState) {

                // TODO Auto-generated method stub

                super.onCreate(savedInstanceState);

                this.setContentView(R.layout.dbdemo);

                // 初始化UI

                btnAdd = (Button) findViewById(R.id.btnAdd);

                btnViewAll = (Button) findViewById(R.id.btnViewAll);

                viewAll = (TextView) findViewById(R.id.viewAll);

                inputTxt = (EditText) findViewById(R.id.txtInput);

                // 初始化DB

                db = new DBHelper(this);

                // 初始化监听

                OnClickListener listener = new OnClickListener() {



                        public void onClick(View v) {

                                if (v.getId() == R.id.btnAdd) {

                                        // 增加

                                        db.save(inputTxt.getText().toString());

                                        db.close();

                                } else if (v.getId() == R.id.btnViewAll) {

                                        // 浏览所有数据

                                        Cursor cur = db.loadAll();

                                        StringBuffer sf = new StringBuffer();

                                        cur.moveToFirst();

                                        while (!cur.isAfterLast()) {

                                                sf.append(cur.getInt(0)).append(" : ").append(

                                                                cur.getString(1)).append("/n");

                                                cur.moveToNext();

                                        }

                                        db.close();

                                        viewAll.setText(sf.toString());

                                }

                        }

                };

                btnAdd.setOnClickListener(listener);

                btnViewAll.setOnClickListener(listener);

        }



}
package com.demo.android.dummynote.tools;



import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.util.Log;



/**

* 数据库操作工具类

*

* @author xzknet@gmail.com

*/

public class DBHelper {

        private static final String TAG = "DBDemo_DBHelper";// 调试标签



        private static final String DATABASE_NAME = "dbdemo.db";// 数据库名

        SQLiteDatabase db;

        Context context;// 应用环境上下文 Activity 是其子类



        DBHelper(Context _context) {

                context = _context;

                // 开启数据库

                db = context.openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE,

                                null);

                CreateTable();

                Log.v(TAG, "db path=" + db.getPath());

        }



        /**

         * 建表 列名 区分大小写? 都有什么数据类型?<br>

         * SQLite 3 TEXT 文本 NUMERIC 数值 INTEGER 整型 REAL 小数 NONE 无类型 查询可否发送select ?

         */

        public void CreateTable() {

                try {

                        db.execSQL("CREATE TABLE t_user ("

                                        + "_ID INTEGER PRIMARY KEY autoincrement," + "NAME TEXT"

                                        + ");");

                        Log.v(TAG, "Create Table t_user ok");

                } catch (Exception e) {

                        Log.v(TAG, "Create Table t_user err,table exists.");

                }

        }



        /**

         * 增加数据

         *

         * @param id

         * @param uname

         * @return

         */

        public boolean save(String uname) {

                String sql = "";

                try {

                        sql = "insert into t_user values(null,'" + uname + "')";

                        db.execSQL(sql);

                        Log.v(TAG, "insert Table t_user ok");

                        return true;



                } catch (Exception e) {

                        Log.v(TAG, "insert Table t_user err ,sql: " + sql);

                        return false;

                }

        }



        /**

         * 查询所有记录

         *

         * @return Cursor 指向结果记录的指针,类似于JDBC 的 ResultSet

         */

        public Cursor loadAll() {

                Cursor cur = db.query("t_user", new String[] { "_ID", "NAME" }, null,

                                null, null, null, null);



                return cur;

        }



        public void close() {

                db.close();

        }

}
回复

使用道具 举报

该用户从未签到

发表于 2011-10-22 13:05:28 | 显示全部楼层

Re:[实例教程]Android-SQLite3

不错,学习学习.
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 13:05:34 | 显示全部楼层

Re:[实例教程]Android-SQLite3

不错,学习学习.
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 13:05:44 | 显示全部楼层

Re:[实例教程]Android-SQLite3

不错,学习学习.
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 13:05:51 | 显示全部楼层

Re:[实例教程]Android-SQLite3

不错,学习学习.
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2011-10-22 13:06:02 | 显示全部楼层

Re:[实例教程]Android-SQLite3

不错,学习学习.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-9 07:35 , Processed in 0.411024 second(s), 47 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表