Android-SQLite3 超基础入门

终于找到关于sqlite中怎么查询库表,转过来跟大家共享一下 

转自:www.javaeye.com/wiki/topic/415471,要用代理才能打开

背景

       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 库名:将uri指定该库,如果没有指定库名,则默认进入sqlite_master库

              # 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();
	}
}

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值