Android-SQLite3 超基础入门

简介: 背景        SQLite 是一个非常流行的嵌入式数据库,它提供了一个清爽的 SQL 接口,相当小的内存占用和高速的响应,更 Happy 的是他还是免费的,大家都可以尽情的使用,很多牛叉的公司(诸如 Adobe,Apple,Google,Sun,Symbian ),开源项目( Mozilla,PHP,Python )都在产品中装配 SQLite.          Andro

背景

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

相关文章
|
5天前
|
IDE Java 程序员
安卓应用开发入门:打造你的第一个“Hello World”
【9月更文挑战第11天】在编程的世界里,每一个初学者的旅程都从一个简单的“Hello World”开始。本文将带领安卓开发的新手们,通过简单直观的方式,一步步构建出自己的第一个安卓应用。我们将探索安卓工作室(Android Studio)的安装、项目的创建,以及如何运行和调试你的应用。无论你是编程新手还是想扩展技能的老手,这篇文章都将为你打开一扇通往安卓世界的大门。
27 7
|
5天前
|
IDE Java API
安卓应用开发入门:打造你的第一个"Hello World"
【9月更文挑战第11天】在探索安卓开发的海洋中,每个开发者的航行都从简单的"Hello World"开始。本文将作为你的航标,引导你驶向安卓应用开发的精彩世界。我们将一起启航,通过浅显易懂的语言和步骤,学习如何构建并运行你的第一个安卓应用。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供所需的知识和信心。准备好了吗?让我们揭开安卓开发的神秘面纱,一起创造些令人兴奋的东西吧!
|
10天前
|
SQL 关系型数据库 数据库
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
|
13天前
|
SQL 数据库 C语言
sqlite3使用入门
本文介绍了SQLite3数据库的安装与使用方法。首先通过`sudo apt install sqlite3`进行安装,并用`sqlite3 --version`验证版本。启动SQLite3后,使用`.help`查看系统维护命令,如`.database`列出数据库、`.tables`列出表等。通过标准SQL语句创建、查询、更新和删除表及数据。示例代码展示了如何使用C语言进行数据库操作,包括打开、创建表、插入数据、查询、更新和删除等基本功能。此外,还介绍了SQLite3的事务处理机制及其重要特性。
|
1月前
|
开发框架 前端开发 .NET
七天.NET 8操作SQLite入门到实战 - (3)第七天Blazor学生管理页面编写和接口对接
七天.NET 8操作SQLite入门到实战 - (3)第七天Blazor学生管理页面编写和接口对接
|
1月前
|
运维 Cloud Native Android开发
云原生之旅:容器化与微服务架构的融合之道安卓应用开发入门指南
本文将深入探讨云原生技术的核心要素——容器化和微服务架构,并揭示它们如何共同推动现代软件的开发与部署。通过实际案例分析,我们将看到这两种技术如何相辅相成,助力企业实现敏捷、可扩展的IT基础设施。文章旨在为读者提供一条清晰的道路,指引如何在云原生时代利用这些技术构建和优化应用。 本文将引导初学者了解安卓应用开发的基本概念和步骤,从安装开发环境到编写一个简单的“Hello World”程序。通过循序渐进的讲解,让读者快速掌握安卓开发的核心技能,为进一步深入学习打下坚实基础。
39 1
|
17天前
|
开发者 iOS开发 C#
Uno Platform 入门超详细指南:从零开始教你打造兼容 Web、Windows、iOS 和 Android 的跨平台应用,轻松掌握 XAML 与 C# 开发技巧,快速上手示例代码助你迈出第一步
【8月更文挑战第31天】Uno Platform 是一个基于 Microsoft .NET 的开源框架,支持使用 C# 和 XAML 构建跨平台应用,适用于 Web(WebAssembly)、Windows、Linux、macOS、iOS 和 Android。它允许开发者共享几乎全部的业务逻辑和 UI 代码,同时保持原生性能。选择 Uno Platform 可以统一开发体验,减少代码重复,降低开发成本。安装时需先配置好 Visual Studio 或 Visual Studio for Mac,并通过 NuGet 或官网下载工具包。
24 0
|
17天前
|
XML IDE Java
安卓应用开发入门:打造你的第一个“Hello World”
【8月更文挑战第31天】 在安卓的浩瀚宇宙中,每一个新星都从一句简单的问候开始闪耀。本文将作为你的航标,引导你探索安卓开发的银河系。无论你是初心者还是资深开发者,构建第一个“Hello World”应用总是令人兴奋的里程碑。通过这篇文章,我们将一起搭建起通往安卓开发世界的桥梁。让我们摒弃复杂的术语,用最简单直白的语言,一步步地走过这段旅程。准备好了吗?让我们一起开启这段冒险吧!
|
17天前
|
搜索推荐 Java Android开发
打造个性化安卓启动器:从入门到精通
【8月更文挑战第31天】在这个数字时代,智能手机几乎成了我们生活的延伸。而作为最流行的操作系统之一,安卓的可定制性让它在众多用户中独树一帜。本文将带你了解如何从零开始构建你自己的安卓启动器,这不仅是一项挑战技能的项目,更是一次让你的设备与众不同的机会。我们将一步步探索创建启动器的过程,包括设计思路、关键代码实现以及最终的测试与优化。无论你是编程新手还是有一定基础的开发者,都能通过这个项目提升技术水平,并给你的日常使用带来便利。准备好了吗?让我们一起潜入安卓开发的海洋,打造专属于你的个性化世界!
|
17天前
|
Kubernetes Cloud Native 搜索推荐
探索云原生技术:Kubernetes入门与实践打造个性化安卓应用:从零开始的Flutter之旅
【8月更文挑战第31天】云原生技术正改变着应用开发和部署的方式。本文将带你了解云原生的基石——Kubernetes,通过实际的代码示例,从安装到部署一个简单的应用,让你迅速掌握Kubernetes的核心概念和操作方法。无论你是初学者还是有一定经验的开发者,这篇文章都将成为你进入云原生世界的桥梁。