Android-SQLite3 超基础入门

本文介绍了SQLite数据库在Android平台上的使用方法,包括数据库的创建、表的建立及数据的增删改查等基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景


       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 org.imti;   

  

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 daguangspecial@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 org.imti;   

  

import android.content.Context;   

import android.database.Cursor;   

import android.database.sqlite.SQLiteDatabase;   

import android.util.Log;   

  

/**  

 * 数据库操作工具类  

 *   

 * @author daguangspecial@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());   

    }   

  

    /**  

     * 建表  

     * 列名 区分大小写?  

     * 都有什么数据类型?  

     * 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();   

    }   

}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值