如何在移动APP中,创建sqlite数据库时在指定文件位置

如何在移动APP中,创建sqlite数据库时在指定文件位置,第1张

要在Android系统中 *** 作SQLite数据库,是通过Android的核心类SQLiteDatabase类来实现的,通常情况下为了数据库升级的需要以及使用方便,会选择继承SQLiteOpenHelper抽像类,但是SQLiteOpenHelper会将数据库文件创建在一个固定的目录(内存的/data/data/<package name/databases>目录中),如果想使用已经存在的数据库文件也就是说数据库会和程序一起发布,就得通过使用SQLiteDabase的静态方法OpenOrCreateDatabase()方法来得到SQLiteDabase对象,下面是一个具体 *** 作类:

package netmydao;

import javaioFile;

import javaioFileOutputStream;

import javaioInputStream;

import netmyjokebookR;

import androidappActivity;

import androidcontentContext;

import androiddatabasesqliteSQLiteDatabase;

public class DBHelper {

//得到SD卡路径

private final String DATABASE_PATH = androidosEnvironment

getExternalStorageDirectory()getAbsolutePath()

+ "/joke";

private final Activity activity;

//数据库名

private final String DATABASE_FILENAME;

public DBHelper(Context context) {

// TODO Auto-generated constructor stub

//这里直接给数据库名

DATABASE_FILENAME = "jokebookdb3";

activity = (Activity)context;

}

//得到 *** 作数据库的对象

public SQLiteDatabase openDatabase()

{

try

{

boolean b = false;

//得到数据库的完整路径名

String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;

//将数据库文件从资源文件放到合适地方(资源文件也就是数据库文件放在项目的res下的raw目录中)

//将数据库文件复制到SD卡中 File dir = new File(DATABASE_PATH);

if (!direxists())

b = dirmkdir();

//判断是否存在该文件

if (!(new File(databaseFilename))exists())

{

//不存在得到数据库输入流对象

InputStream is = activitygetResources()openRawResource(

Rrawjokebook);

//创建输出流

FileOutputStream fos = new FileOutputStream(databaseFilename);

//将数据输出

byte[] buffer = new byte[8192];

int count = 0;

while ((count = isread(buffer)) > 0)

{

foswrite(buffer, 0, count);

}

//关闭资源

fosclose();

isclose();

}

//得到SQLDatabase对象

SQLiteDatabase database = SQLiteDatabaseopenOrCreateDatabase(

databaseFilename, null);

return database;

}

catch (Exception e)

{

Systemoutprintln(egetMessage());

}

return null;

}

}

写完这个类之后,就能得到SQLiteDatabase对象,就能对数据库 *** 作了。

1

项目名称右键, 运行Android项目

2

打开项目源代码所在目录中的bin目录,就可以看到就一个apk安装文件,这个文件直接就可用于安装,测试。

方法2

项目名称右键,打开myeclipse打包向导

选择项目名称

选择或创建数字证书

指定apk文件存放目录

创建数据库

选择开始菜单中→程序→Management SQL Server 2008→SQL Server Management Studio命令,打开SQL Server Management Studio窗口,并使用Windows或 SQL Server身份验证建立连接。

在对象资源管理器窗口中展开服务器,然后选择数据库节点

右键单击数据库节点,从d出来的快捷菜单中选择新建数据库命令。

执行上述 *** 作后,会d出新建数据库对话框。在对话框、左侧有3个选项,分别是常规、选项和文件组。完成这三个选项中的设置会后,就完成了数据库的创建工作,

在数据库名称文本框中输入要新建数据库的名称。例如,这里以“新建的数据库”。

在所有者文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用使用全文索引复选框。

在数据库文件列表中包括两行,一行是数据库文件,而另一行是日记文件。通过单击下面的添加、删除按钮添加或删除数据库文件。

切换到选项页、在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。

切换到文件组页,在这里可以添加或删除文件组。

完成以上 *** 作后,单击确定按钮关闭新建数据库对话框。至此“新建的数据”数据库创建成功。新建的数据库可以再对象资源管理器窗口看到。

前端比较简单网上很多东西

后台

你要先看tomcat和severlet

然后看>

android sqlite数据库,第一次调用getWritableDatabase或者getReadableDatabase后,就会在程序的包下创建一个数据库,之前执行SQLiteOpenHelper的onCreate方法,

当数据库创建了以后,是不会再创建的,只有通过升级数据库版本号来实现

当数据库的版本号发生了变化以后,SQLiteOpenHelper会调用onUpgrade方法

因此都是在onUpgrade来处理新增字段,新增表等 *** 作

要替换数据库

将原来数据库放到res/raw目录下,程序启动的时候,通过流读取了来,并写到你程序目录下

String dbfile = "/data"+ EnvironmentgetDataDirectory()getAbsolutePath() + "/"+ contextgetPackageName()+"数据库名"

InputStream is = contextgetResources()openRawResource(Rrawdata);

FileOutputStream fos = new FileOutputStream(dbfile);

byte[] buffer = new byte[1024];

int count = 0;

while ((count =isread(buffer)) > 0) {

foswrite(buffer, 0, count);

fosflush();

}

fosclose();

isclose();

这样就把数据库给替换了,但是通常不建议这么做

最好是在onUpgrade来处理

请采纳哈

1、服务器名出现问题,更改服务器名称一般可以解决问题。数据库如果是安装在本机,服务器名可以用“”或“(local)”来代替;如果是安装在局域网的其它计算机上,可以用IP地址作为服务器名。

2、如果是SQL数据库未能能成功安装,再次重新安装时,可能会无法安装,提示是存在一个未完成的安装挂起。解决就方法是:打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager中找到并删除PendingFileRenameOperations项目即可。

3、可以先暂时关闭防火墙或者杀毒软件,看是否是这些软件的安全设置所导致。

4、检修网络是否存在故障。以上就是江苏个体户app升级后访问数据库错误处理方法。

以上就是关于如何在移动APP中,创建sqlite数据库时在指定文件位置全部的内容,包括:如何在移动APP中,创建sqlite数据库时在指定文件位置、Android Studio如何将数据库文件打包到apk中,APP安装后能使用提前准备好的.db文件,大神们帮帮忙,谢谢!、appserv-win32-2.5.10安装后,创建一个新的数据库,无权限是什么问题,我是XP系统的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9316253.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存