Android中有关数据库SQLite的介绍
SQLite是android提供的一个关系型数据库。今天要总结的主要内容就是它。
在使用SQLite的时候用到的抽象类是
SQLiteOpenHelper
public SQLiteDatabase getReadableDatabase ()
Create and/or open a database. This will be the same object returned by getWritableDatabase()
unless some problem, such as a full disk, requires the database to be opened read-only. In that case, a read-only database object will be returned. If the problem is fixed, a future call togetWritableDatabase()
may succeed, in which case the read-only database object will be closed and the read/write object will be returned in the future.
Like getWritableDatabase()
, this method may take a long time to return, so you should not call it from the application main thread, including fromContentProvider.onCreate()
.
Returns
- a database object valid until
getWritableDatabase()
orclose()
is called.
Throws
SQLiteException | if the database cannot be opened |
---|
他是用于创建或者打开一个数据库
package sqlite;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;public class DatabaseHelper extends SQLiteOpenHelper{public DatabaseHelper(Context context, String name, CursorFactory factory,int version) {super(context, name, factory, version);// TODO Auto-generated constructor stub}@Overridepublic void onCreate(SQLiteDatabase arg0) {// TODO Auto-generated method stub}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stub}}
注意在其中必须添加一个构造函数DatabaseHelper,其中有四个参数Context指的就是他的Activity参数,第二个参数指的是表的名字,第三个参数一般传的是空值,最后一个指的是当前的数据库的版本。数据库的版本是正数而且必须是递增的。
private static final int VERSION = 1;public DatabaseHelper(Context context, String name, CursorFactory factory,int version) {super(context, name, factory, version);// TODO Auto-generated constructor stub}public DatabaseHelper(Context context,String name,int version){this(context,name,null,version);}public DatabaseHelper(Context context,String name){this(context,name,VERSION);}
其中第二个构造函数是调用第一个构造函数,他自身含有三个参数
@Overridepublic void onCreate(SQLiteDatabase arg0) {// TODO Auto-generated method stubSystem.out.println("create a Database");arg0.execSQL("create table user(id int , name varchar(20))");}
我们在其中添加一句打印输出的语句和一个execSQL函数,它是用于执行SQL语句
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello_world"/>
<Buttonandroid:id="@+id/createDatabase"android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="createDatabase"/><Buttonandroid:id="@+id/updateDatabase"android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="updateDatabase"/><Buttonandroid:id="@+id/insert"android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="insert"/>
<Buttonandroid:id="@+id/update"android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="update"/>
<Buttonandroid:id="@+id/query"android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="query"/></LinearLayout>
下面我们来详细分析一下他们是如何实现的:
createButton = (Button)findViewById(R.id.createDatabase);updateButton = (Button)findViewById(R.id.updateDatabase);insertButton = (Button)findViewById(R.id.insert);updateRecordButton = (Button)findViewById(R.id.update);queryButton = (Button)findViewById(R.id.query);createButton.setOnClickListener(new CreateListener());updateButton.setOnClickListener(new UpdateListener());insertButton.setOnClickListener(new InsertListener());updateRecordButton.setOnClickListener(new UpdateRecordListener());queryButton.setOnClickListener(new QueryListener());
为每一个按钮实现一个监听器:
class CreateListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubDatabaseHelper dbHelper =new DatabaseHelper(MainActivity.this,"test_db");SQLiteDatabase db =dbHelper.getReadableDatabase();}}
上面实现的是建立一个数据库的功能,这里我们引入了刚才建立的DatabaseHelper这一个类,其中MainActivity是该类的名字,数据库的名字我们叫做test_db;这里我们调用刚才DatabaseHelper两个参数的构造函数
之后使用SQLiteDatabase 读取数据库
class UpdateListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubDatabaseHelper dbHelper =new DatabaseHelper(MainActivity.this,"test_db",2);SQLiteDatabase db =dbHelper.getReadableDatabase();}}
和上面的那个操作差不多,唯一不同的是调用的构造函数不同
class InsertListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubContentValues values =new ContentValues();values.put("id", 1);values.put("name", "LiHua");DatabaseHelper dbHelper= new DatabaseHelper(MainActivity.this,"test_db",2);SQLiteDatabase db = dbHelper.getWritableDatabase();db.insert("user", null, values);} }
这里我们使用到了ContentValues函数,这个在数据库当中是很常用的函数他用来对数据库的成员进行赋值(或许说的不准确)是键值对,前面是关键字,后面对应的是输入的值
class UpdateRecordListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubContentValues values =new ContentValues();values.put("name", "zhangsan");DatabaseHelper dbHelper= new DatabaseHelper(MainActivity.this,"test_db",2);SQLiteDatabase db = dbHelper.getWritableDatabase();db.update("user", values, "id=?", new String[]{"1"});}}
思路仍然是一样的:
class QueryListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubDatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this,"test_db");SQLiteDatabase db = dbHelper.getReadableDatabase();
//相当于查询语句 user是表格的名字Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);while(cursor.moveToNext()){String name = cursor.getString(cursor.getColumnIndex("name"));System.out.println("query--->" + name);}}}
Android中有关数据库SQLite的介绍相关推荐
- android中的数据库操作(SQLite)
android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库 an ...
- android中的数据库操作
android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库 andr ...
- android不同机型编译不同so,如何使用adb命令查看android中的数据库
1,进入到控制台中,输入adb shell,进入到命令模式的环境中 2,输入:cd /data/data/ 3, 选择你所在的数据库文件,比如我的com.android.homework, 输入命令: ...
- android开发中的数据库SQLite的使用
其实学习android很久了,关于数据存储,之前学习的时候也一同学习过,编程这些东西很久没用都忘得差不多了,最近做个项目要用到,所以又学习了一遍. android中关于数据的存储有好几种,这次主要是S ...
- Python中使用数据库SQLite
参考原文 廖雪峰Python教程 使用SQLite SQLite是一种嵌入式数据库,它的数据库就是一个文件.由于SQLite本身是用C写的,而且体积很小,所以经常被集成到各种应用程序中,甚至在IOS和 ...
- Android 学习心得(2)——Android内置数据库SQLite
一.简介: Android有一个内置数据库SQLite,它是一种轻型数据库,它有五种数据类型:NULL(空型).BLOB(二进制).INTEGER(整型).REAL(浮点型).TEXT(字符串文本), ...
- Android 中关于Cursor类的介绍
来自:http://www.cnblogs.com/TerryBlog/archive/2010/07/05/1771459.html 使用过 SQLite 数据库的童鞋对 Cursor 应该不陌生, ...
- android轻量数据库SQLite的使用
SQLite是一款轻型的数据库,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持 Windows/Linu ...
- Python中使用数据库SQLite和MySQL
一.数据库SQLite 1 建立数据库与建立表 直接来看例子: import sqlite3conn = sqlite3.connect("test.db"); c = conn. ...
最新文章
- 2020移动apn接入点哪个快_手机推荐:为什么别人的手机4G网总是比你快?这样设置一下,网速立马飙升...
- SpringCloud--Eureka服务注册与发现 Eureka 集群搭建 详细案例!!!
- Android 入职感想
- 程序员里面开源_开源对年轻程序员意味着什么
- MyBatis3源码解析(7)TypeHandler注册与获取
- .net与java之争
- 【spring boot】启动类启动 错误: 找不到或无法加载主类 com.codingapi.tm.TxManagerApplication 的解决方案...
- 苹果mac需牢记的SSH命令
- python模拟微信投票_python 模拟微信投票
- ID3算法的Python实现
- 计算机毛利润的函数,毛利率计算公式
- 手机聊天记录备份与恢复的方法汇总
- 边缘计算是什么?边缘计算系统的组成及概念
- 计算机分享硬盘,共享磁盘是什么怎么设置
- Guitar Pro8苹果mac最新版本下载安装教程
- Xdebug中文文档-堆栈跟踪
- 帆软内置数据集实现决策报表联动
- 报表中如何实现不规则布局
- Error: Program type already present: android.support.design.widget.CoordinatorLayout$Behavior 预览器异常
- 剑指offer面试题(11-20)——java实现