Unity sqlite android 연동

https://stackoverflow.com/questions/50753569/setup-database-sqlite-for-unity


구세주

system.data는 필요없다



<UnityInstallationDirecory>\Editor\Data\Mono\lib\mono\2.0

다음 파일을 복사하십시오.

  • I18N.MidEast.dll
  • I18N.Other.dll
  • I18N.Rare.dll
  • I18N.West.dll
  • Mono.Data.Sqlite.dll
  • Mono.Data.SqliteClient.dll

이 단계에서는 원시 Sqlite 라이브러리를 가져와야합니다. 소스 코드를 가져 와서 빌드하고 사용하거나 사전 컴파일 된 binray를 사용할 수 있습니다.

1. Windows 용 기본 라이브러리 가져 오기

여기sqlite3.dll 에서 미리 컴파일 된 Windows 64 비트를 다운로드하여 경로에 넣으십시오 .<ProjectName>\Assets\Plugins\x86_64


2. Android 용 기본 라이브러리 가져 오기

다운로드 미리 컴파일 libsqlite3.so에 대한 안드로이드 ARM 프로세서 에서 여기 와에 넣어 <ProjectName>\Assets\Plugins\Android\libs\armeabi-v7a경로.

다운로드 미리 컴파일 libsqlite3.so에 대한 안드로이드 인텔 x86 프로세서 에서 여기 와에 넣어 <ProjectName>\Assets\Plugins\Android\libs\x86경로.

IEnumerator RunDbCode(string fileName)
{
    //Where to copy the db to
    string dbDestination = Path.Combine(Application.persistentDataPath, "data");
    dbDestination = Path.Combine(dbDestination, fileName);

    //Check if the File do not exist then copy it
    if (!File.Exists(dbDestination))
    {
        //Where the db file is at
        string dbStreamingAsset = Path.Combine(Application.streamingAssetsPath, fileName);

        byte[] result;

        //Read the File from streamingAssets. Use WWW for Android
        if (dbStreamingAsset.Contains("://") || dbStreamingAsset.Contains(":///"))
        {
            WWW www = new WWW(dbStreamingAsset);
            yield return www;
            result = www.bytes;
        }
        else
        {
            result = File.ReadAllBytes(dbStreamingAsset);
        }
        Debug.Log("Loaded db file");

        //Create Directory if it does not exist
        if (!Directory.Exists(Path.GetDirectoryName(dbDestination)))
        {
            Directory.CreateDirectory(Path.GetDirectoryName(dbDestination));
        }

        //Copy the data to the persistentDataPath where the database API can freely access the file
        File.WriteAllBytes(dbDestination, result);
        Debug.Log("Copied db file");
    }

    try
    {
        //Tell the db final location for debugging
        Debug.Log("DB Path: " + dbDestination.Replace("/", "\\"));
        //Add "URI=file:" to the front of the url beore using it with the Sqlite API
        dbDestination = "URI=file:" + dbDestination;

        //Now you can do the database operation below
        //open db connection
        var connection = new SqliteConnection(dbDestination);   //이 부분을 변형해서 사용
        connection.Open();                                      //

        var command = connection.CreateCommand();               //
        Debug.Log("Success!");
    }
    catch (Exception e)
    {
        Debug.Log("Failed: " + e.Message);
    }
}

comment

タイトルとURLをコピーしました