文档章节

Android DB

枫TI
 枫TI
发布于 2016/12/27 15:32
字数 461
阅读 11
收藏 0

创建表--主键自增长

表一:创建自增长的主键

//正确语句
create table if not exists table_people_profile (ID INTEGER  primary key autoincrement, name text);
//错误语句
create table if not exists table_people_profile (ID INTEGER autoincrement, name text, primary key (ID));
create table if not exists table_people_profile (ID INTEGER auto_increment, name text, primary key (ID));
create table if not exists table_people_profile (ID INTEGER primary key  auto_increment, name text);

效果图

注意,系统会维持一个表记录当前表主键最后的值

如果多张表都存在自动增长主键情况

创建表--主键自增长

数据表操作:

//增加一个字段(authorID)
alter table table_works_size add authorID integer
//设置字段(authorID)所有值为 11
UPDATE table_works_size SET authorID = 11
//更改字段名称

导出数据库

遇到数据库出现问题,调试过程会比较麻烦,如:表是否创建成功,数据是否完整等,通过代码查询数据表较为的麻烦。如果把数据库导出到SD上,直接打开数据库,查看相关表及数据方便很多。

//获取数据库文件路径,文件拷贝到SD

String pathDB = getDatabasePath("xxx.db").getAbsolutePath();
String sdPathDB = "/mnt/sdcard/xxx.db"
//要复制的目录下的所有非子目录(文件夹)文件拷贝
public static void CopySdcardFile(String fromFile, String toFile) {

    try {
        InputStream fosfrom = new FileInputStream(fromFile);
        OutputStream fosto = new FileOutputStream(toFile);
        byte bt[] = new byte[1024];
        int c;
        while ((c = fosfrom.read(bt)) > 0) {
            fosto.write(bt, 0, c);
        }
        fosfrom.close();
        fosto.close();
    } catch (Exception ex) {
    }
}

导出的数据库截图

预置数据库

 

/assets/xxx.db 拷贝到 /data/data/packageName/xxx.db

String DB_PATH = "/data/data/packageName/databases/";
String DB_NAME = "xxx.db";
//判断是否存在数据库,不存在则拷贝
if ((new File(DB_PATH + DB_NAME)).exists() == false) {
    String assetsPath = "xxx.db";
    File f = new File(DB_PATH);
    if (f.exists() == false) {
        f.mkdir();
    }
    FileCopy.fileCopyFromAssetsTo(assetsPath, DB_PATH + DB_NAME);
}
/**
 * 文件拷贝
 *
 * @param fromFilePath
 * @param toFilePath
 */
public void fileCopyFromAssetsTo(String fromFilePath, String toFilePath) {
    try {
        InputStream inputStream = getResourceAsStream("/assets/" + fromFilePath);
        OutputStream outputStream = new FileOutputStream(new File(toFilePath));
        byte[] bytes = new byte[1024];
        int line;
        while ((line = inputStream.read(bytes)) != -1) {
            outputStream.write(bytes, 0, line);
        }
        outputStream.flush();
        outputStream.close();
        inputStream.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

 

© 著作权归作者所有

枫TI
粉丝 14
博文 111
码字总数 66620
作品 2
东城
私信 提问
关于界面查询功能的问题

求解决Activity的问题。 求大神帮忙实现这个功能。 xml : Stu_zx_searchok.xml 代码: Activitiy:Stu_search_zx.java(查询按钮的传值有问题) package com.niuniu.activity; import java.u...

JoneWisso
2014/05/05
173
0
android SQLite使用SQLiteOpenHelper类对数据库进行操作

一、 SQLite介绍 SQLite是android内置的一个很小的关系型数据库。 SQLite的官网是http://www.sqlite.org/,可以去下载一些文档或相关信息。 博客中有一篇有稍微详细一点的介绍,大家可以去看...

hosealee
2013/06/08
1K
0
-Android数据库SQLiteDatabase的使用

Android提供了三种数据存储方式: 第一种是文件存储。 第二种是SharedPreferences存储。 第三种是数据库SQLiteDatabase存储。 文件存储我就不多说了,而SharedPreferences可以存取简单的数据...

小克898
2012/11/26
196
0
Android开发SQLite的使用

在Android开发中SQLite起着很重要的作用,网上SQLite的教程有很多很多,不过那些教程大多数都讲得不是很全面。本人总结了一些SQLite的常用的方法,借着论坛的大赛,跟大家分享分享的。 一.SQ...

Erichkko
2015/08/28
263
0
安卓应用安全指南 4.5.3 使用 SQLite 高级话题

安卓应用安全指南 4.5.3 使用 SQLite 高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA 4.0 4.5.3.1 在 SQL 语句的断言中使用通配符...

apachecn_飞龙
2018/03/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Docker 可视化管理 portainer

官网安装指南: https://portainer.readthedocs.io/en/latest/deployment.html docker-compose.yml 位置,下载地址:https://downloads.portainer.io/docker-compose.yml...

Moks角木
28分钟前
2
0
Spring Security 实战干货:必须掌握的一些内置 Filter

1. 前言 上一文我们使用 Spring Security 实现了各种登录聚合的场面。其中我们是通过在 UsernamePasswordAuthenticationFilter 之前一个自定义的过滤器实现的。我怎么知道自定义过滤器要加在...

码农小胖哥
31分钟前
3
0
常见分布式事务解决方案

1 微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,这样可以降低开发难度、增强扩展性、便于敏捷开发。当前被越来越多的开发者推崇,很多互联网行业巨头、开源...

asdf08442a
32分钟前
2
0
influxdb continuous queries(cq)从入门到放弃

从前一篇influxdb的文章prometheus基于influxdb的监控数据持久化存储方案完成之后,就一直在折腾influxdb发布测试和生产环境的问题,经过接近2个月的验证,最终发现使用influxdb自带cq的方案...

狗陈
43分钟前
7
0
7.线程通信

在现实生活中,如果一个人团队正在共同完成任务,那么他们之间应该有通信,以便正确完成任务。 同样的比喻也适用于线程。 在编程中,要减少处理器的理想时间,我们创建了多个线程,并为每个线...

Eappo_Geng
49分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部