Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:SQLite数据库。我们需要创建它吗?_Android_Sqlite - Fatal编程技术网

Android:SQLite数据库。我们需要创建它吗?

Android:SQLite数据库。我们需要创建它吗?,android,sqlite,Android,Sqlite,我已经学习了一些使用sqlite数据库的教程,它们似乎都是在应用程序第一次运行时创建新的数据库、表等。这有必要吗?如果在安装应用程序时,资产文件夹中已经有一个预构建的数据库,该怎么办?我能不能仅仅打开与上述数据库的连接并开始使用它的信息,或者每个人都想在第一次启动时使用sql创建它有什么具体原因?这个问题经常出现。尝试本教程使用Android上的现有数据库: 自从我上次使用SQLite数据库(在Android中)已经有一段时间了,但我相信当他们编写CREATE语句时,他们总是使用如果不存在条件(

我已经学习了一些使用sqlite数据库的教程,它们似乎都是在应用程序第一次运行时创建新的数据库、表等。这有必要吗?如果在安装应用程序时,资产文件夹中已经有一个预构建的数据库,该怎么办?我能不能仅仅打开与上述数据库的连接并开始使用它的信息,或者每个人都想在第一次启动时使用sql创建它有什么具体原因?

这个问题经常出现。尝试本教程使用Android上的现有数据库:

自从我上次使用SQLite数据库(在Android中)已经有一段时间了,但我相信当他们编写
CREATE
语句时,他们总是使用
如果不存在
条件(即
创建(数据库|表),如果不存在…

我不知道您将使用SQLite做什么,但我相信他们在Android中这样做“只是为了确保”。也就是说,如果这是用户第一次运行应用程序,那么必须首先创建DB/表,否则应用程序会发疯。否则,它们(可能)已经创建了,这个案例将由
IF NOT EXISTS
子句处理,它们只是继续创建与现有数据库的连接。双赢


(由于某种原因,如果用户不是第一次使用该应用程序,并且数据库不存在,那么它将再次创建。但这很明显,不是吗?)

如果您只是链接到现有的数据库,它将不会绑定到您的系统。所以可能会有失败。在第一次运行时创建db是使用db最合适的方法

  • 您不能将位于assets文件夹中的数据库文件直接用作SQLite数据库,因为该文件不是位于公共文件系统中的常用文件。例如,您只能以只读方式访问它。所以,您唯一的选择是将这些数据库从assets文件夹复制到设备的文件系统
  • 要第一次处理数据库创建并访问它,有一个特殊的助手类
    SQLiteOpenHelper
    。读一读。具体查看
    SQLiteOpenHelper.onCreate()
    -数据库创建(或从资产文件夹复制,如您的情况)应该放在哪里

  • 有道理,但在我目前的特殊情况下,我有一个包含3个不同表的数据库,每个表中有几百行。在第一次运行时将所有这些信息添加到数据库中似乎需要大量的编码。在我的情况下,在一个外部编辑器中管理我的数据库并像前面描述的那样将其添加到应用程序中会更有意义吗?还是将数据库与应用程序绑定仍然很重要?如果从头开始创建db是最好的方法,我当然会遵循这种想法,但我只是想确保我没有为自己创建不必要的工作。很棒的教程。谢谢你的链接@barmaley是对的,不是从应用程序中创建的数据库是只读的,但是上面的链接描述了如何将该数据库复制到系统文件中以便使用。