首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

android SqLitez综上所述

2012-07-30 
android SqLitez综述android SqLitez综述 背景SQLite 是一个非常流行的嵌入式数据库,它提供了一个清爽的 S

android SqLitez综述

                                        android SqLitez综述

 

背景

       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 方式

      

 

Java代码  android SqLitez综上所述
    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);      }    }  
 

 

 

 

Java代码  android SqLitez综上所述
    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();      }  }  

转载地址:http://tuesdayhoho.iteye.com/blog/415471

热点排行