android 本地数据库sqlite的封装
单机android sqlite数据库的实现,这个数据库可与程序一起生成在安装包中
一、下载sqlite3.exe文件
二、运行 cmd 转到sqlite3.exe 所在目录 运行 sqlite3.exe 数据库名.db
然后会出现sqlite>的命令提示符
输入创建表的语句, create table 表名(‘列’,‘列’。。。);(注意: 要在结束部分加 分号 )
此时会在sqlite3.exe 所在目录,出现所建数据库的文件
三、如果想在Android中运行的话,需要在数据库中增添
CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'zh_CN')
INSERT INTO "android_metadata" VALUES ('zh_CN') 四、将数据库 复制到 Android项目中res/raw中 五、下面是代码:
public class TestSqlDatabase{ private static final String DATABASE_PATH = "/data/data/your.package.name/databases"; //此处不要改动,这个为数据库在手机上的物理地址
private static final int DATABASE_VERSION = 0;
private static final String DATABASE_NAME = "test.db"; //此处为数据库名称 private static String outFileName = DATABASE_PATH + "/" + DATABASE_NAME; private Context context;
private SQLiteDatabase database; public TestSqlDatabase(Context context) {
this.context = context; File file = new File(outFileName);
if (file.exists()) {
database = SQLiteDatabase.openOrCreateDatabase(outFileName, null);
if (database.getVersion() != DATABASE_VERSION) {
database.close();
file.delete();
}
}
try {
buildDatabase();
} catch (Exception e) {
e.printStackTrace();
} }
private void buildDatabase() throws Exception{
InputStream myInput = context.getResources().openRawResource(R.raw.test);
File file = new File(outFileName); File dir = new File(DATABASE_PATH);
if (!dir.exists()) {
if (!dir.mkdir()) {
throw new Exception("创建失败");
}
} if (!file.exists()) {
try {
OutputStream myOutput = new FileOutputStream(outFileName); byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
myOutput.close();
myInput.close();
} catch (Exception e) {
e.printStackTrace();
} }
} /**
* 查找
* @return
*/
public Cursor select() {
database = SQLiteDatabase.openOrCreateDatabase(outFileName, null);
String sql = "select * from note_table"; Cursor cursor = database.rawQuery(sql, null);
return cursor;
}
/**
* 插入
* @param word
* @param note
* @return
*/
public long insert(String word, String note) {
database = SQLiteDatabase.openOrCreateDatabase(outFileName, null);
ContentValues cv = new ContentValues();
cv.put("word", word);
cv.put("note", note); long result = database.insert("note_table", null, cv);
return result;
} /**
* 更新
* @param word
* @param note
* @return
*/
private int update(String word, String note) { //参数 word 为修改条件 note为修改内容
database = SQLiteDatabase.openOrCreateDatabase(outFileName, null); ContentValues cv = new ContentValues();
cv.put("note", note); int result = database.update("note_table", cv, "word=?", new String[]{word}); return result;
} /**
* 删除
* @param word
*/
public int deleteNote(String word) {
database = SQLiteDatabase.openOrCreateDatabase(outFileName, null);
int result = database.delete("note_table", "word=?", new String[]{word});
return result;
} public void close() {
database.close();
} }
android 本地数据库sqlite的封装的更多相关文章
- android本地数据库,微信数据库WCDB for Android 使用实例
android本地数据库,微信数据库WCDB for Android 使用实例 Home · Tencent/wcdb Wikihttps://github.com/Tencent/wcdb/wiki ...
- [转载]Unity3D 游戏引擎之使用C#语言建立本地数据库(SQLITE)
以前在开发中一直使用IOS源生的数据库,通过传递消息的形式在与Unity3D中进行交互.本文我在详细说说如何使用C#语言来在MAC 操作系统下创建Unity本地数据库,我是C#控哇咔咔--- 首先你需 ...
- Xamarin.Android 本地数据库 SQLiteDatabase 操作
目的:使用 SQLiteDatabase 创建本地数据库.表,并对数据进行增删改查操作. 引用命名空间: using Android.App; using Android.Widget; using ...
- QT 创建本地数据库(SQLite数据库)存储数据
注意:QT自带SQLITE数据库,不需要再安装 1.创建一个包含创建.查询.修改和删除数据库的数据库类(DataBase) DataBase.h头文件 #pragma once #include &l ...
- android 建数据库 SQLite 存储sd 卡或者内存
android 创建数据库调用SQLiteOpenHelper,一般不直接操作SQLiteDatabase . 是通过SQLiteOpenHelper来获取 public class DBOpenHe ...
- 轻量级本地数据库SQLite在WinRT的使用
开发环境:Windows 8.1 开发工具:Visual Studio Express 2013 for Windows SQLite数据库介绍 1.SQLite是一款轻型的嵌入式数据库,使用C++开 ...
- android之数据库SQLite(一)
创建数据库 首先定义SQLiteOpenHelper的子类 代码如下: package com.example.myandroid; import android.content.Context; i ...
- Android中数据库Sqlite的性能优化
1.索引简单的说,索引就像书本的目录,目录可以快速找到所在页数,数据库中索引可以帮助快速找到数据,而不用全表扫描,合适的索引可以大大提高数据库查询的效率.(1). 优点大大加快了数据库检索的速度,包括 ...
- android 构建数据库SQLite
1.首先我们需要一个空白的eclipse android工程 2.然后修改AndroidManifest.xml 在<application></application>标签里 ...
随机推荐
- jQ伪类选择器
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- Java中ArrayList,Vector,LinkedList,HashMap,HashTable,HashSet对比及总结
1.所有的集合的父类都是Collection的接口 2.Set List Map 区别 A 在Set里面:无法添加元素的顺序,所以Set里面的元素不能重复 B 在List中:有索引号,类似于数组, ...
- 解决Tomcat: Can't load IA 32-bit .dll on a AMD 64-bit platform 问题
错误如下: java.lang.UnsatisfiedLinkError: E:\Program Files\MyEclipse 10\apache-tomcat-7.0.23\bin\tcnativ ...
- script defer和async一探
今天几经折腾,终于回家了,最近公司上的事忙了好一阵子,终于可以闲下来,重新在整理一下,又重新了解了一下defer和async在页面加载过程差异. 定义和用法 async 属性规定一旦脚本可用,则会异步 ...
- mybatis新手入门常见问题集(持续更新)
一.参数为集合 Q:parameterType指的的类型是集合类型还是对象? A:都可以,甚至不用在xml中指定也可以.第一,mybatis会对传入的参数进行判断是不是list或者array,第二,m ...
- 天方夜谈·数据结构·Queue
"我在想Y的时候不能想X....." 什么叫做Queue(队列)?"队列是项的集合,对于每一项x和y,如果x在y之前离开对头,那么x一定在y之前进入队列--Sesh·Ve ...
- APP反编译第一课《如何找到核心代码》
相信很多人都应该会去接触APP反编译,本小七给大家带来入门级别套路,自己也在慢慢摸索学习,一起成长吧.第一步,反编译需要的工具有:一.java环境,其实这里你只要安装了burp就不用管这个的二.apk ...
- [ext4]磁盘布局 - inode bitmap & table
在[磁盘布局 group部分]已经介绍过ext4的整体布局,其中存在两个与inode有关的名称:inode bitmap和inode table. Inode bitmap,用于表示inode tab ...
- Azure IoT 技术研究系列5-Azure IoT Hub与Event Hub比较
上篇博文中,我们介绍了Azure IoT Hub的使用配额和缩放级别: Azure IoT 技术研究系列4-Azure IoT Hub的配额及缩放级别 本文中,我们比较一下Azure IoT Hub和 ...
- [HNOI2004]宠物收养场 Treap前驱后继
凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领 ...