资产文件夹

时间:2017-10-07 21:13:20

标签: android database sqlite encryption utf-8

我试图在我的Android应用程序的assets文件夹中实现一个简单的预填充数据库,然后我将在稍后查询。但我遇到的问题是编码问题,我可以在Android工作室内转换数据库,但然后使用密码加密实现密码。

我目前将数据库添加到项目中的过程

  1. 首先,我完成了在sqlitebrowser应用程序中构建一个简单数据库和表的过程,并确保首选项部分中的编码设置为UTF-8。
  2. http://sqlitebrowser.org - 链接到我目前用于构建数据库的应用程序。

    1. 在我对数据库感到满意后,我只需将其复制并将其传递到我的资产文件夹中。

    2. 我现在看到下面的图片(示例)

    3. enter image description here

      4.我的下一步是按照要求将其转换为UTF-8,但我认为sqlite浏览器已经将其设置为这种格式。

      5.The Code现在将正确构建数据库,我可以在我的数据文件夹中看到它。

      1. 然后,我从虚拟设备上获取数据库的副本,但是当尝试使用sqlitebrowser打开它时,我会在一个要求输入密码的窗口(密码加密)中显示。现在,当我第一次构建数据库的时候,我没有添加密码,所以这会让人想到当Android要求它转换时它是否也实现了加密?
      2. 回到主要问题,如何构建一个UTF-8格式的简单数据库,然后我可以将其实现到Android Studio资源文件夹中?

1 个答案:

答案 0 :(得分:0)

在第2步停止忽略第3步。 相反,第3步编写一个应用程序(可能使用Android SQLiteAssetHelper,有许多关于使用SQLiteAssetHelper的教程)来打开和使用数据库。

Android Studio不是为浏览/插入SQLite文件而设计的,所以基本上它并不知道底层数据的含义。但是,通过屏幕截图,您可以看到某些数据实际上表示SQLite文件。

例如,以下是在Notepad ++中打开SQLite数据库(实际上是在Android应用程序中创建和使用)的屏幕截图(见任何相似之处?): -

enter image description here

e.g。它以 SQLite format 3 开头,下面提到 tablestudent ,然后继续 CREATE TABLE students (_id......

所以很可能数据很好,它只需要知道如何解释文件中的数据即SQLite就可以打开/使用。

从您的屏幕截图中可以看到,您很可能有一个名为 _id 的列。

因此,您对问题的回答(忽略最佳意见): -

  

你好Zoe什么是构建一个简单的sqlite的最佳应用程序   数据库将采用UTF-8格式,然后我可以导入到我的   资产文件夹?

是,看起来你已经有了一个合适的工具(我个人使用SQlite Manager进行maniuplating和查询SQLite数据库,不能说SQLite Brwowser是更好还是更差或相同)。您现在需要做的就是确定如何执行新的步骤3.

关于你的陈述

  

然后我将数据库传递到我的资产文件夹,这意味着必须是3   资产文件夹中的图像。

情况并非如此,所有这一切都是因为Android Studio尝试打开该文件并且可能认为它应该是一个图像。我怀疑你可以放入PDF或Word文档(可能必须更改扩展以欺骗Android Studio),它可能会得到类似的响应。即(不是我试过这个)可能是因为Android Studio没有被设计为读取MS Word或PDF文档,所以对它们一无所知。

好的,现在尝试了这个,这是PDF文件的一部分(扩展名重命名为xxx,因为AS将其打开为PDF格式,带有pdf扩展名): -

enter image description here