【问题标题】:How to create sqlite database in Unity (c#)?如何在 Unity (c#) 中创建 sqlite 数据库?
【发布时间】:2015-04-29 05:59:58
【问题描述】:

我需要在 Unity (C#) 中为 android 项目创建 sqlite 数据库,但找不到所需的信息或教程。

我正在关注这个链接http://answers.unity3d.com/questions/743400/database-sqlite-setup-for-unity.html

但我收到此错误:

 Failed to load 'Assets/Plugins/sqlite3.dll', expected 64 bit architecture (IMAGE_FILE_MACHINE_AMD64), but was IMAGE_FILE_MACHINE_I386.    
 Mono.Data.Sqlite.SqliteConnection:Open()    
 Mono.Data.Sqlite.SqliteConnection:Open()

 Failed to load 'Assets/Plugins/sqlite3.dll', expected 64 bit architecture (IMAGE_FILE_MACHINE_AMD64), but was IMAGE_FILE_MACHINE_I386.
 Mono.Data.Sqlite.SQLite3:Open(String, SQLiteOpenFlagsEnum, Int32, Boolean)
 Mono.Data.Sqlite.SQLite3:Open(String, SQLiteOpenFlagsEnum, Int32, Boolean)
 Mono.Data.Sqlite.SqliteConnection:Open()

 DllNotFoundException: Assets/Plugins/sqlite3.dll
 Mono.Data.Sqlite.SQLite3.Open (System.String strFilename, SQLiteOpenFlagsEnum flags, Int32 maxPoolSize, Boolean usePool)
 Mono.Data.Sqlite.SqliteConnection.Open ()

我正在使用 Unity 5(免费版)。

有没有免费的sqlite数据库插件?

如果可能,请提供教程链接。

【问题讨论】:

  • 既然你提到了C#,就把unityscript标签换成C#

标签: c# database sqlite unity3d


【解决方案1】:

当您在 64 位系统上使用 32 位二进制文​​件时会发生此错误。在互联网上搜索大量后,我发现 64 位二进制文​​件+还添加了一个示例项目。你可以下载它们here

【讨论】:

    【解决方案2】:

    本教程可以帮助您使用 C# 在 Unity 中创建 SQLite 数据库: https://medium.com/@rizasif92/sqlite-and-unity-how-to-do-it-right-31991712190.


    您可以从此link 下载所需的插件,其中已经包含 SQLite 的库。

    using Mono.Data.Sqlite;
    using UnityEngine;
    using System.Data;
    

    然后为创建数据库执行以下操作:

    string dbConnectionString = "URI=file:" + Application.persistentDataPath + "/" + dbName + ".db";
    IDbConnection dbConnection = new SqliteConnection(dbConnectionString);
    dbConnection.Open();
    IDbCommand dbCommand = dbConnection.CreateCommand();
    dbCommand.CommandText = //write what you want here in SQLite syntax.
    

    然后你需要执行dbCommand。

    例如创建一个新表:

    dbCommand.CommandText = "CREATE TABLE IF NOT EXISTS " + tableName + " ( "
            KeyRequiredLevel + " INTEGER, " +
            KeyPrice + " INTEGER, " +
            KeyPriority + " INTEGER, " +
            KeyIsLoacl + " BOOLEAN, " +
            KeyPercentage + " DOUBLE, " +
            KeyImageURL + " TEXT, " +
            KeyIsActive + " BOOLEAN )" ;
    
    dbCommand.ExecuteNonQuery();
    

    【讨论】:

      【解决方案3】:

      错误提示“DllNotFoundException:Assets/Plugins/sqlite3.dll”,您是否将 sqlite3.dll 文件放入 Asset/Plugins 文件夹中?你必须创建这个 Plugins 文件夹。

      【讨论】:

      • 感谢您回答我的问题,sqlite3.dll 文件已经在 Asset/Plugins 文件夹中。
      【解决方案4】:

      【讨论】:

      • 感谢您回答我的问题,我遵循该链接中给出的示例,它也给出了相同的错误:无法加载“Assets/Plugins/sqlite3.dll”,预期为 64 位架构(IMAGE_FILE_MACHINE_AMD64),但是是 IMAGE_FILE_MACHINE_I386。
      • 您应该根据您的架构使用一个版本的 sqlite3.dll。也许这个链接应该有帮助(它包括一个 x64 版本的 sqlite3.dll):forum.unity3d.com/threads/…
      【解决方案5】:

      我建议尝试使用专为 Unity 设计的库。就个人而言,这就是我一直在做的处理多平台 SQLite 处理的事情。我强烈推荐这个库/包装器

      SQLite 让 Unity3d 变得简单 http://codecoding.github.io/SQLite4Unity3d

      我目前正在对此进行改进并使其更易于使用。不过,这可能是一个很好的起点!

      祝你好运!

      【讨论】:

        猜你喜欢
        • 2014-04-07
        • 1970-01-01
        • 2015-03-06
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        相关资源
        最近更新 更多