【问题标题】:Best way to insert 200+ rows into SQLite Database将 200 多行插入 SQLite 数据库的最佳方法
【发布时间】:2011-06-22 15:01:54
【问题描述】:

我正在创建一个带有数据库的应用程序。我有一张桌子,里面有 200 多行。 (应用程序中使用的参考表) 我创建了一个类来创建数据库并对其进行升级。

我在类中创建了字符串来创建所需的表,但是在类中添加 200 多行会变得非常大

有没有更好的方法来插入这些行。目前它们位于应用程序内的 SQL 文件中

谢谢

【问题讨论】:

  • 某些行是重复的还是规则的?如果是这样,您可以使用循环。否则,我看不到如何在没有 200 多行 SQL 文件的情况下创建 200 多行 SQLite 表。
  • 走 SQL 文件路径。我需要更改什么才能使数据库读取文件而不是创建字符串
  • 您的意思是让 SQLite 读取文件而不创建 Java 字符串作为中间体?我不太确定。

标签: android sqlite


【解决方案1】:

您还可以在资产文件夹中附带预填充的 SQLite 数据库,如此 SO 答案中所述:

Ship an application with a database

【讨论】:

    【解决方案2】:

    您应该考虑使用事务,并可能更改数据库的 PRAGMA 同步。 插入 200+ 行会很长,使用事务会减少所需的时间:

    sql.execSQL("BEGIN;");
    //insert 1
    //insert 2
    // ...
    sql.execSQL("END;");
    

    将 PRAGMA 同步更改为 0 或 1 也会提高插入速度,但可能会导致一些错误(它会在插入时删除写锁)

    请参阅http://www.sqlite.org/pragma.htmlhttp://www.sqlite.org/lang_transaction.html 了解更多信息

    【讨论】:

      【解决方案3】:

      您可以在需要时创建一个小型 .net 应用程序来填充表格。这是vb中的一个例子。通过谷歌搜索 vb 到 C# 转换器,它可以很容易地翻译成 c#。只需将代码复制并粘贴到转换器中即可。

          Dim myConnection As SqlConnection
          Dim myCommand As SqlCommand
          Dim i as Integer 
      
          'Connect to database
          myConnection = New SqlConnection("server=localhost;uid=sa;pwd=;database=yourdb") 
          myConnection.Open()
      
          'Insert rows, you may be able to use a for loop to make inserting easier
          myCommand = New SqlCommand("INSERT INTO yourtable VALUES( 12, _
          'IT Manager')",100,300,myConnection)
          i=myCommand.ExecuteNonQuery()
      
          'Close the connection
      
          myConnection.Close()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-19
        • 1970-01-01
        • 1970-01-01
        • 2013-10-28
        • 2017-02-08
        • 1970-01-01
        相关资源
        最近更新 更多