随Android程序发布SQLite数据库

2024-09-03 12:38

本文主要是介绍随Android程序发布SQLite数据库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在发布前我们需要在assets目录下放置我们需要的数据库文件。在Android Studio下默认是没有assets文件夹的,我们需要在/app/src/main/下新建assets文件夹。这里我放置在assets下的数据库名称为test.db

接下来是打开这一文件夹。
新建一个DatabaseHelper

package com.liu.dbhelper;import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.SQLException;/*** Created by deonte on 15-10-31.*/
public class DataBaseHelper extends SQLiteOpenHelper {private static final String DB_NAME = "test.db"; //数据库名称private static String DBPATH="/data/data/com.liu.dbhelper/databases/";private static final int version = 1; //数据库版本private SQLiteDatabase myDatabase;private Context context;public DataBaseHelper(Context con) {super(con,DB_NAME,null,version);context=con;}@Overridepublic void onCreate(SQLiteDatabase db) {//创建DatabaseHelper}public synchronized void close(){if (myDatabase!=null){myDatabase.close();}super.close();}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}//创建一个空的db,然后替换所选dbpublic void creatDataBase() throws IOException{if (!checkDatabase()){this.getWritableDatabase();try{copyDatabase();}catch (IOException e){Log.i("database--->","Error copying database from assets");}}}//检查数据库是否存在private boolean checkDatabase(){SQLiteDatabase checkableDatabase=null;try{checkableDatabase=SQLiteDatabase.openDatabase(outDBPATH+DB_NAME,null,SQLiteDatabase.OPEN_READONLY);}catch (SQLiteException e){//数据库不存在,返回false}if (checkableDatabase!=null){checkableDatabase.close();}return checkableDatabase!=null?true:false;}//从应用程序资产中复制数据库//越过空使用数据库private void copyDatabase()throws IOException{InputStream myInput=context.getAssets().open(DB_NAME);//打开任一目录下数据库// InputStream myInput=new FileInputStream(DBPATH+DB_NAME);OutputStream myOutput=new FileOutputStream(outDBPATH+DB_NAME);byte[] buffer=new byte[1024];int length;while ((length=myInput.read(buffer))>0){myOutput.write(buffer,0,length);}myOutput.flush();myOutput.close();myInput.close();}public void openDatabase()throws SQLException{myDatabase=SQLiteDatabase.openDatabase(DBPATH+DB_NAME,null,SQLiteDatabase.OPEN_READWRITE);}}
    DataBaseHelper dataBaseHelper=new DataBaseHelper(this);try{dataBaseHelper.creatDataBase();}catch (IOException E){Log.i("database---->",E.toString());}

“`

这篇关于随Android程序发布SQLite数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132982

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

修复已被利用的高危漏洞! macOS Sequoia 15.6.1发布

《修复已被利用的高危漏洞!macOSSequoia15.6.1发布》苹果公司于今日发布了macOSSequoia15.6.1更新,这是去年9月推出的macOSSequoia操作... MACOS Sequoia 15.6.1 正式发布!此次更新修复了一个已被黑客利用的严重安全漏洞,并解决了部分中文用户反馈的

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm