2019独角兽企业重金招聘Python工程师标准>>>

SQLite数据库是android系统内嵌的数据库,小巧强大,能够满足大多数SQL语句的处理工作,而SQLite数据库仅仅是个文件而已。虽然SQLite的有点很多,但并不是如同PC端的mysql般强大,而且android系统中不允许通过JDBC操作远程数据库,所以只能通过webservice等手段于php、servlet交互获取数据。

SQLiteDatabase类,代表了一个数据库对象,通过SQLiteDatabase来操作管理数据库。

一些基本的用法:

static  SQLiteDatabase openDatabase(String path,SQLiteDatabase.CUrsorFactory factory,int flag);

static SQLiteDatabase openOrCreateDatabase(File file,SQLiteDatabase.CursorFactory factory);

static SQLiteDatabase openOrCreateDatabase(String path,SQLiteDatabse.CursorFactory factory);

通过这些静态方法可以很方便的打开和新建一个数据库。

execSQL(String sql,Object[] bindArgs)

execSQL(String sql)

rawQuery(String sql,String[] selectionArgs);

beginTransaction()

endTransaction()

这些函数可以完成SQL功能,对于查询出来的结果是用Cursor表示的,类似于JDBC中的ResultSet类,在这些类中通过方法move(int offset)、moveToFirst()、moveToLast()、moveToNext()、moveToPosition(int position)、moveToPrivious()获取需要的结果行。

下面通过一个实例来说明一下SQLiteDatabase的基本使用:

main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".Main" ><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:text="key" /><EditTextandroid:id="@+id/keys"android:layout_width="100sp"android:layout_height="wrap_content" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:text="value" /><EditTextandroid:id="@+id/values"android:layout_width="100sp"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/btn"android:layout_width="100sp"android:layout_height="wrap_content"android:text="submit" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content" ><ListViewandroid:id="@+id/lv"android:layout_width="match_parent"android:layout_height="wrap_content" /></LinearLayout></LinearLayout>

用于填充数据的mytextview.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:id="@+id/listkey"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="left" /><TextViewandroid:id="@+id/listvalue"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="300sp" /></LinearLayout>

Main.java

package com.app.main;import android.annotation.SuppressLint;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;public class Main extends Activity {EditText ed1 = null;EditText ed2 = null;Button btn = null;ListView lv = null;SQLiteDatabase db = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);ed1 = (EditText) this.findViewById(R.id.keys);ed2 = (EditText) this.findViewById(R.id.values);btn = (Button) this.findViewById(R.id.btn);lv = (ListView) this.findViewById(R.id.lv);db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString()+ "/my.db3", null);btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {String key = ed1.getText().toString();String value = ed2.getText().toString();try {insertData(db, key, value);Cursor cursor = db.rawQuery("select * from tb_info", null);inflateListView(cursor);} catch (Exception e) {String sql = "create table tb_info(_id integer primary key autoincrement,db_key varchar(20),db_value varchar(50))";db.execSQL(sql);insertData(db, key, value);Cursor cursor = db.rawQuery("select * from tb_info", null);inflateListView(cursor);}}});}// 向数据库中插入数据private void insertData(SQLiteDatabase db, String key, String value) {db.execSQL("insert into tb_info values (null,?,?)", new String[] { key,value });System.out.println("------------------");}// 向ListView中填充数据@SuppressLint("NewApi")public void inflateListView(Cursor cursor) {SimpleCursorAdapter adapter = new SimpleCursorAdapter(Main.this,R.layout.mytextview, cursor, new String[] { "db_key","db_value" },new int[] { R.id.listkey, R.id.listvalue },CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);lv.setAdapter(adapter);}@Overrideprotected void onDestroy() {super.onDestroy();if (db != null && db.isOpen()) {db.close();}}}

实现的效果:

需要特别指出,在用SimpleCursorAdapter封装Cursor的时候,要求底层数据库表的主键列的列名为_id,因为SimpleCursorAdapter只能识别主键列名为_id的表。

转载于:https://my.oschina.net/summerpxy/blog/174820

SQLite的基本使用一相关推荐

  1. android数据库isnull,Android中SQLite数据库知识点总结

    SQLite 数据库简介 SQLite 是一个轻量级数据库,它是D. Richard Hipp建立的公有领域项目,在2000年发布了第一个版本.它的设计目标是嵌入式的,而且占用资源非常低,在内存中只需 ...

  2. C++ VS2013环境编译使用sqlite数据库全过程

    转载:http://www.cnblogs.com/imoon/archive/2012/11/30/2796726.html 转载:https://blog.csdn.net/hjm4702192/ ...

  3. iOS开发-xcdatamodeld文件 CoreData的介绍和使用,sqlite的使用

    CoreData的介绍和使用  源引:http://www.jianshu.com/p/d027090af00e CoreData是数据存储的一种方式,CoreData实质也是对SQLite的封装. ...

  4. node sqlite 插入数据_安卓手机中的应用数据都保存在哪些文件中?

    随笔 知识 案例 声音 其他 编者按 手机取证,品牌是一方面,从操作系统入手是另外一个渠道.手机中的重要数据基本上都以轻量数据库的形式保存在本地,也就是经常讲的sqlite db文件中. 从推特上得知 ...

  5. android数据库降级_Android SQLite (二.数据库创建,升级及降级)

    上篇文章简介和常用语法介绍了SQLite数据库的基本信息和一些常用的语法操作,本篇文章主要介绍Android开发过程中SQLite数据库的创建使用和常见问题处理. 一.SQLiteOpenHelper ...

  6. android 数据库索引,SQLite数据库提供警告自动索引(列)升级Android L后

    我已经升级了我的Nexus 7与Android 5.0 Lollipop,之前,我的应用程序运行良好与SQLite数据库,但现在每当我执行任何类型的查询,它给我log cat错误,如: 12-09 1 ...

  7. Android客户端开发—数据库SQLite基本语句

    之前接触过一点MySQL数据库方面的知识,现在在学习Android软件开发过程中发现SQLite语句与MySQL的语句还是有部分不同,SQLite中的命令不算太多,可以在adb shell中进入App ...

  8. Android SQLite数据库之事务的学习

    SQLite是Android系统内置的一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少,通常只需要几百K的内存就足够了.SQLite不仅支持标准的SQL语法,还遵循了数据库的ACID事务. ...

  9. 基础学习总结(四)--SQLite

    1. SQLiteDatabase 操作SQLite数据库的类.可以执行SQL语句,对数据库进行增.删.查.改的操作.也可以进行transaction的控制.很多类对数据库的操作最终都是通过SQLit ...

  10. 操作SQLite数据库

    本文摘自: http://docs.blackberry.com/en/developers/deliverables/25108/Creating_and_deleting_SQLite_datab ...

最新文章

  1. 【转】 LSD(Line Segment Detector) 直线段检测算法学习~
  2. laravel项目运行 php artisan cache:clear 命令报错
  3. Javascript中char和int的互相转换的代码(转载)
  4. POJ 2367 Genealogical tree【拓扑排序】
  5. Linux之解决终端关闭,程序停止运行问题
  6. FireFox 在新建标签页插入“片段”广告引社区争议
  7. delphi的多线程编程
  8. SVN版本管理:两种开发模式
  9. 怎样在计算机硬盘里新建文件,高手教你轻松新建文件夹
  10. 高频逆变器有什么优缺点?它有哪些分类?-道合顺大数据Infinigo
  11. 物联网开发笔记(28)- 使用Micropython开发ESP32开发板之控制240x240的oled屏幕显示图片(ST7789芯片)
  12. 云服务器被攻击了快速解决方案
  13. 2015第二届上海国际机上内饰与翻新展览会
  14. SMAA算法详解 - SMAADetectHorizontalCornerPattern
  15. NVIDIA Jetson之GPIO引脚设置
  16. 《保护我们的数字遗产:DNA数据存储》白皮书发布
  17. Navicat Premium绿色版安装
  18. 三分钟轻松实现连接西门子PLC
  19. 比较了几种编程语言后,我终于get到了少儿编程的真谛
  20. Android elevation设置大揭秘

热门文章

  1. java中io流如何创建一个文件_,Java中Io流操作-File类的常用操作-创建文件,创建文件夹...
  2. python模拟键盘输入_python模拟键盘输入的问题
  3. .net 怎么在控制器action中返回一个试图_一个view事件分发,面试官6连问直击灵魂,我被虐的体无完肤...
  4. 干翻Java_Java第三次作业第一题
  5. Django创建项目的命令
  6. 中国高校计算机考研:计算机数据结构核心考点解析
  7. 为什么技术最牛的码农当不了首席工程师?
  8. 基于redis分布式锁实现的多线程并发程序(原创)
  9. 【HTTP趣谈】origin,referer和host的区别
  10. 《剑指offer》包含min函数的栈