`
tuesdayhoho
  • 浏览: 51640 次
  • 性别: Icon_minigender_1
  • 来自: 黑龙江 哈
社区版块
存档分类
最新评论

Android-SQLite3超基础入门

阅读更多

 

Android-SQLite3 超基础入门

背景

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

 

附截图


  • 大小: 17.1 KB
9
1
分享到:
评论
4 楼 tuesdayhoho 2011-10-13  
恩,是啊,这是刚接触的时候写的,自己记录的,呵呵,很久不来了,lordlong也告别这里了看来  
3 楼 294460620 2011-09-16  
直接继承SQLiteOpenHelper,使用android的接口不是更简单吗,这样弄有点复杂了
2 楼 morosefrog 2010-01-20  
谢谢~学习了~
1 楼 JimyChen 2009-08-14  
android上有没有操作sqlite数据库的客户端软件

相关推荐

    Android-SQLite3_超基础入门

    Android-SQLite3_超基础入门

    Android-SQLite3_超基础入门.zip

    本资料"Android-SQLite3_超基础入门.zip"显然是针对初学者设计的,旨在帮助开发者快速理解和掌握如何在Android应用中使用SQLite3进行数据存储。 SQLite3在Android中的应用主要涉及到以下几个关键知识点: 1. **...

    Android-SQLite-Beginner-Course:Android SQLite入门课程的所有源代码-android source code

    Android SQLite入门课程 开始使用Android开发所需的所有工具 在这部影片中我当然非常详细,我教你的内置附带在每一个Android设备标准数据库。 学习SQLite的来龙去脉对于每位Android开发人员而言都是基础。 每个应用...

    无涯教程(LearnFk)-SQLite教程完整离线版.pdf

    3. 整个SQLite数据库存储在单个跨平台磁盘文件中,简化了数据管理。 4. 它非常小巧且轻量级,完全配置后小于400KiB,省略了可选功能后则小于250KiB。 5. SQLite独立无外部依赖,数据库事务完全兼容ACID,允许从多个...

    react-native-sqlite-example:React Native SQLite示例

    React Native SQLite示例适用于iOS和Android的简单React Native SQLite示例项目入门克隆项目首先,克隆项目$ git clone https://github.com/peacecwz/react-native-sqlite-example.git$ cd react-native-sqlite-...

    android SQLite数据库

    在Android开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于存储和管理应用程序中的数据。本文将深入探讨Android中的SQLite数据库,特别是通过DbOpenHelper....

    Android平台sqlite快速入门

    这篇博文“Android平台sqlite快速入门”显然是引导开发者如何在Android应用中有效地使用SQLite数据库。以下是对这个主题的详细说明: 1. **SQLite简介**: SQLite是一个开源的数据库,它不需要服务器进程,可以...

    android sqlite 简介

    二、Android下的SQLite编译与基础入门 在Android开发中,SQLite通过Android SDK的SQLiteOpenHelper类进行操作。1,首先,我们需要创建一个继承自SQLiteOpenHelper的子类,定义数据库版本号和升级方法。2,然后,我们...

    入门级 androidstudio 链接SQLite数据库

    以下是一些关于"入门级 androidstudio 链接SQLite数据库"的关键知识点: 1. **SQLiteOpenHelper**: 这是Android SDK提供的一种抽象类,用于帮助我们管理SQLite数据库的生命周期。我们需要继承这个类,并重写其中的`...

    Android sqllite3 基础入门

    ### Android SQLite3 基础入门详解 #### 背景与概述 SQLite是一个轻量级的嵌入式关系型数据库管理系统,它以其简洁、高效和跨平台的特点,在移动开发领域,尤其是Android平台上得到了广泛的应用。SQLite对于...

    [Android Studio应用开发——基础入门与应用实战][方欣,杨勃][电子课件]

    【Android Studio应用开发——基础入门与应用实战】是针对初学者和希望提升Android应用程序开发技能的人群设计的一门课程。这门课程由专家方欣和杨勃共同编写,旨在通过电子课件的形式,深入浅出地讲解Android ...

    高清彩版 Android SQLite Essentials

    1. **基础知识**:介绍SQLite的基本概念、特点及其在Android平台上的集成方法。包括数据表的设计、SQL语言的基础知识等。 2. **数据管理**:详细讲解如何在Android应用程序中创建、读取、更新和删除数据库记录,...

    android的sqlite增删改查示例

    首先,Android SDK提供了一个SQLiteOpenHelper类,它是所有SQLite操作的基础。这个类负责创建、升级和打开与SQLite数据库的连接。创建自定义的SQLiteOpenHelper子类,你需要重写`onCreate()`和`onUpgrade()`方法。`...

    ppt-知识单元一-基础入门.pptx 入门知识,app的入门知识

    根据提供的文件信息,我们可以归纳并深入探讨以下几个关键的知识点: ### 1. 移动应用开发概述 ...以上内容总结了移动应用开发的基础知识、Android系统的介绍及其开发流程等内容,为初学者提供了全面而深入的理解。

    SQLite入门资料大全

    我自己寻找整理的SQLite资料,希望对大家有帮助。清单如下: ...sqlite3-基础教程 sqlite3使用详解 sqlite命令行手册(中文) SQLite权威指南 SQLite教程 SQLite入门与分析 SQLite数据库文件格式全面分析

    Android Studio实现送餐管理系统,优秀课程设计,SQLite数据库,入门必看!

    Android Studio实现送餐管理系统,优秀课程设计,SQLite数据库,入门必看! Android Studio实现送餐管理系统,优秀课程设计,SQLite数据库,入门必看! Android Studio实现送餐管理系统,优秀课程设计,SQLite数据库...

    新版Android开发教程笔记--基础入门一

    3. **Java编程语言**:虽然现在Kotlin已成为Android开发的首选语言,但Java仍然是理解Android系统的基础。了解Java语法、面向对象编程以及异常处理是必不可少的。 4. **Kotlin语言**:Kotlin是Google推荐的现代...

    JoneCool-Android-MyDiary-master_android_androidstudio_Androidstu

    《Android Studio入门实战:打造个人日记本应用》 在Android开发领域,Android Studio作为官方推荐的集成开发环境(IDE),已经成为了开发者们的首选工具。本项目"JoneCool-Android-MyDiary-master"就是一个使用...

    Android代码-卡米天气,安卓入门实战训练项目

    【Android代码-卡米天气:安卓入门实战训练项目】 在Android开发领域,实践是学习的最佳途径,而"卡米天气"(KamiWeather)就是一个专为安卓初学者设计的实战项目。这个项目可以帮助开发者理解并掌握Android应用的...

Global site tag (gtag.js) - Google Analytics