|
FAQ
Sept 18, 2018 19:41:27 GMT
Post by echo17 on Sept 18, 2018 19:41:27 GMT
Q: I'm having a problem, what is the best way to get help? A: answerQ: How do I list the tables in my database? A: answerQ: How do I use Unicode characters in my queries? A: answerQ: How do I use SimpleSQL with Javascript? A: answerQ: SimpleSQL is telling me that a table or field does not exist, but I can see it in my database. I've made changes to my database, but they are not showing up at runtime. Why is this? A: answerQ: How do I update my project database with the changes made to the working database at runtime? A: answerQ: I'm using data types like BOOL and storing 'True' and 'False', why are they always being interpreted as false? A: answerQ: Where is the working copy of my database located? A: answerQ: Where can I find API documentation or a user guide? A: answerQ: How do I store images in my database? A: answerQ: How do I dynamically load a new database at runtime? A: answerQ: How do I use a database to load prefabs at runtime? A: answerQ: How do I load a database from my application's persistent data path (sandbox)? A: answerQ: When compiling on Android, why do I get the error: "Missing Dll resource: SimpleSQL.Resources.sqlite3.dll.resource" A: answerQ: Q: How do I fix a DllNotFoundException: sqlite3 on Windows? A: answerQ: How can I fix the error "Missing Dll resource: SimpleSQL.Resources.libsqlite3.so.resource" A: answerQ: on Android I am getting the error: DllNotFoundException: Unable to load DLL 'sqlite3': The specified module could not be found. A: answerQ: Why am I getting the error that sqlite3.dll is missing when using Unity 5? A: answerQ: Where do I find the Invoice Number I received when I purchased the plugin? A: answerQ: How do I use "LIKE" with parameters? A: answerQ: Is WP8 supported? A: answerQ: Why am I getting the error: "Attempting to JIT compile method '(wrapper delegate-invoke) System.Reflection.MonoProperty/ ..."? A: answerQ: How do you get column names from an empty query or empty table? A: answerQ: How do I delete the database at the working path? A: answerQ: Why does indexing not work on Android? A: answerQ: How do I modify the source code? A: answerQ: Why do I get the error "Failed to open database at the working path"? A: answerQ: How do I get just a single value from a database? A: answerQ: Is SimpleSQL supported on iOS il2cpp? A: answerQ: Why is my data showing empty values? A: answerQ: Why am I getting an error saying "No such table"? A: answerQ: How do I get the last inserted row of a table? A: answerQ: How can I store my database in a path other than the default persistent data path? A: answerQ: What is the best way to store my game objects? A: answerQ: Does SimpleSQL support encryption? A: answerQ: How do I make my database read-only so that no one can access the database? A: answerQ: How do I use SimpleSQL with Playmaker? A: answerQ: How do I download the latest version of the asset? A: answerQ: How do I compile as a UWP app? A: answerQ: What is a good program to use to create and edit databases? A: answerQ: How do I fix a "Busy" error? A: answerQ: Why am I getting the error "database disk image is malformed"? A: answerQ: Why am I getting the error "SQLiteException: file is encrypted or is not a database"? A: answerQ: How do I keep a persistent connection to my database between scenes? A: answerQ: How do I build for multiple platforms without having to switch sqlite libraries in the options menu? A: answerQ: How do I create a table by type or name? A: answerQ: In Android, I get the error "Attribute application@allowBackup value=(false) from [:unityLibrary] AndroidManifest.xml". How do I fix? A: answerQ: How do I store Vectors in my database? A: answerQ: How do I fix errors like "doesn't have column X" or "get method not found"? A: answerQ: How do I load a database at runtime from a path outside of the persistent data path? A: answerQ: Can parameters be used for sql injection attacks? A: answerQ: How do I use a different version of the sqlite library? A: answer
|
|
|
FAQ
Sept 18, 2018 19:42:35 GMT
Post by echo17 on Sept 18, 2018 19:42:35 GMT
Q: I'm having a problem, what is the best way to get help?Now and then you will come across a problem or question that may not be answered in these FAQs. If so, the best way to communicate the issue with me is to create a simple project that shows the problem occurring. Being able to dig into your project and run it against my source code is the quickest way for me to see what is going on. Please include the invoice number you received when you purchased SimpleSQL. I will only debug your projects if I can verify that you have purchased the plugin.Note: You do not need to include the invoice attachment that you received, it is sufficient to just provide the invoice number if you prefer. Be sure to keep your project simple. Try to eliminate anything else that is not relevant to the problem so that it is easier to narrow down the issue. Larger projects will take more time to sift through and may introduce other errors not directly related to SimpleSQL. If possible, create a project from scratch and build a database example that produces the issue you are seeing. Also, be sure to include a list of steps that I can perform to reproduce the issue. Keep in mind that I have never seen your project before and do not know how to interact with it without your guidance. Let me know what you expect to see, since what I observe may appear operational to my uninitiated eye. Note that the more complicated your example project or the less detail you provide in how to demonstrate an issue you are seeing, the lower the priority I will assign to helping you solve your issue. Most of my time is spent helping people with my various products, so to make it fair to everyone I will choose to help those that make it easier first.When you create your project, just zip up the entire project folder. If you send me individual assets, the links between them will be lost and I will have to recreate the project from scratch. This can possibly produce skewed results since I have created a different project from the one you have sent. The best way to determine if your sample project is testable is to open it yourself and try to run it. You can send your project to the email in my signature. I try to respond as quickly as possible (with the exception of weekends, holidays, and vacation time). Note: Please DO NOT post your project on public forums! This is a violation of the Unity Asset Store license agreement since your project will contain dll's which you are not free to distribute.
|
|
|
FAQ
Sept 18, 2018 19:44:37 GMT
Post by echo17 on Sept 18, 2018 19:44:37 GMT
Q: How do I list the tables in my database?
You can list the tables in your database by querying the system table "sqlite_master". You will need to set up a table structure to store the information first:
using SimpleSQL;
public class Table { [PrimaryKey] public string name { get; set; } }
Then, in your script, you can get the list of tables like this:
public SimpleSQL.SimpleSQLManager dbManager;
public void ListTables() { List<Table> tables = dbManager.Query<Table>("SELECT name FROM sqlite_master WHERE type = 'table'"); foreach (Table table in tables) { Debug.Log(table.name); } }
|
|
|
FAQ
Sept 18, 2018 19:46:14 GMT
Post by echo17 on Sept 18, 2018 19:46:14 GMT
Q: How do I use Unicode characters in my queries?If you will be using Unicode characters in your queries, you will need to pass them as parameters and not embed them directly in the strings. Parameters are denoted by a question mark (?) An example:
public SimpleSQL.SimpleSQLManager dbManager;
public void UpdateDB() { string sql = "UPDATE Settings SET value=? WHERE id=?"; dbManager.Execute(sql, "красный", 35); }
List<Place> places = dbManager.Query<Place>("SELECT * FROM Place WHERE title LIKE ?", "%Ö%");
For more information on parameters, please see chapters 8, 9, and 10 of the user manual: User ManualNote: SQL Administrator may show these characters incorrectly, but SimpleSQL will read them in properly.Warning: Parameters may be able to be used for sql injection attacks, so if your query will be running based on user input, then I would recommend building your strings explicitly. Please see this link for more information: link
|
|
|
FAQ
Sept 18, 2018 19:47:24 GMT
Post by echo17 on Sept 18, 2018 19:47:24 GMT
Q: How do I use SimpleSQL with Javascript?Converting the SimpleSQL examples into Javascript is as simple as adding periods before each generic type. Here is the SimpleQuery code from the demo converted to Javascript:
#pragma strict import System.Collections.Generic; // reference to our database manager object in the scene var dbManager : SimpleSQL.SimpleSQLManager; // reference to the gui text object in our scene that will be used for output var outputText : GUIText; function Start () { // Gather a list of weapons and their type names pulled from the weapontype table var weapons : List.<Weapon> = dbManager.Query.<Weapon>( "SELECT " + "W.WeaponID, " + "W.WeaponName, " + "W.Damage, " + "W.Cost, " + "W.Weight, " + "W.WeaponTypeID, " + "T.Description AS WeaponTypeDescription " + "FROM " + "Weapon W " + "JOIN WeaponType T " + "ON W.WeaponTypeID = T.WeaponTypeID " + "ORDER BY " + "W.WeaponID " ); // output the list of weapons outputText.text = "Weapons\n\n"; var weapon : Weapon; for(var w : int = 0; w < weapons.Count; w++) { weapon = weapons[w]; outputText.text += "Name: '" + weapon.WeaponName + "' " + "Damage:" + weapon.Damage.ToString() + " " + "Cost:" + weapon.Cost.ToString() + " " + "Weight:" + weapon.Weight.ToString() + " " + "Type:" + weapon.WeaponTypeDescription + "\n"; } }
The Weapon.cs file that defines the weapon type will need to be moved to the folder "/Assets/Standard Assets". This is because Javascript will not be able to see C# classes unless they reside in this folder. Please see these links for more information: forum.unity3d.com/threads/29703-Javascript-error-does-not-denote-valid-typedocs.unity3d.com/Documentation/ScriptReference/index.Script_compilation_28Advanced29.html
|
|
|
FAQ
Sept 18, 2018 19:48:44 GMT
Post by echo17 on Sept 18, 2018 19:48:44 GMT
Q: SimpleSQL is telling me that a table or field does not exist, but I can see it in my database. I've made changes to my database, but they are not showing up at runtime. Why is this?SimpleSQL actually has two copies of your database: the embedded database and the working copy. The embedded db is the database that you create and attach to in your project. The working copy is what SimpleSQL actually queries and updates. The underlying sqlite library has to connect to an actual, physical database file in order to function. It cannot connect to the embedded database in your project, so that is why the database is copied to the working path. The reason there are two copies is twofold: - The embedded database is packaged as part of the final application and therefore cannot be written to (updated). A copy is made into a working directory that Unity and all platforms can access fully (read / write).
- Making updates to the embedded database automatically would overwrite any changes made by a user at runtime
If you have "Overwrite if Exists" set to true in your SimpleSQLManager script, then the embedded db will be copied to the working location every time your application runs. Keep in mind that this will overwrite your database and wipe out any changes you have made at runtime on the working copy. This setting is good for databases that will only keep static data, like application settings. If you have dynamic data (your users or your program will be updating the data in the working copy), then you want "Overwrite if Exists" to be false. Keep in mind that any changes you make to your embedded database will not be copied over to your working copy if this is set to false. Instead, you will need to create an upgrade path in your code to accommodate various versions of your database. Since a user can be at any version, you will need to handle all cases of upgrades. This can be simply implemented in a linear fashion. Upgrade PathSome pseudocode: assuming the current db version is at 3: - get db version, possibly stored in the database itself.
- if (db version = 0) then do some upgrades to version 1. Set db version to 1
- if (db version = 1) then do some upgrades to version 2. Set db version to 2
- if (db version = 2) then do some upgrades to version 3. Set db version to 3
- if (db version = 3) then don't do anything, the database is up to date
Example: if we have a table in our database for settings defined as:
using SimpleSQL;
public class DatabaseSetting { [PrimaryKey] public string SettingName { get; set; }
public string SettingValue { get; set; } }
Then an upgrade path could look like this:
using UnityEngine; using System.Collections.Generic; using System; using SimpleSQL;
/// <summary> /// This example shows how to upgrade a database programmatically. This is useful if you want to change the /// structure of a database without overwriting the data. The basic flow is: /// /// 1) Get the database version /// 2) Perform upgrade operations based on what version the database is at /// 3) Update the database version /// /// </summary> public class UpgradeDatabase : MonoBehaviour { public SimpleSQLManager dbManager;
void Start () { bool recordExists = false; int dbVersion = -1; string sql;
sql = "CREATE TABLE IF NOT EXISTS [DatabaseSettings] " + "(" + "SettingName TEXT NOT NULL UNIQUE, " + "SettingValue TEXT, " + "PRIMARY KEY(SettingName) " + ")";
dbManager.Execute(sql);
// load the database version from the DatabaseSettings table sql = "SELECT * " + "FROM " + "DatabaseSettings " + "WHERE " + "SettingName = ?";
DatabaseSetting versionSetting = dbManager.QueryFirstRecord<DatabaseSetting>(out recordExists, sql, "DatabaseVersion"); if (recordExists) { dbVersion = Convert.ToInt16(versionSetting.SettingValue); }
Debug.Log("Database is currently at version " + dbVersion);
if (dbVersion == -1) { sql = "INSERT INTO DatabaseSettings " + "(" + "SettingName, " + "SettingValue " + ")" + "VALUES " + "(" + "?, ?" + ")"; dbManager.Execute(sql, "DatabaseVersion", 1);
dbVersion = 1;
Debug.Log("Upgraded database to version 1"); }
if (dbVersion == 1) { // the current database is at version 1, so we need to make some changes to get it compatible with version 2
// version 2 changes: // 1) Create new table called UnitAccessoryTypes // 2) Create new table called UnitAccessories // 3) Add some data to the UnitAccessoryTypes table
// Begin a transaction to process multiple commands at once dbManager.BeginTransaction();
// 1) Create UnitAccessoryTypes table sql = "CREATE TABLE IF NOT EXISTS [UnitAccessoryTypes] " + "(" + "AccessoryTypeID INTEGER NOT NULL PRIMARY KEY, " + "AccessoryTypeName TEXT(500) NOT NULL " + ")";
dbManager.Execute(sql);
// 2) Create UnitAccessories table sql = "CREATE TABLE IF NOT EXISTS [UnitAccessories] " + "(" + "AccessoryID INTEGER NOT NULL PRIMARY KEY, " + "AccessoryName TEXT(500) NOT NULL, " + "AccessoryTypeID INTEGER NOT NULL, " + "Cost INTEGER NOT NULL " + ")";
dbManager.Execute(sql);
// 3) Add some data to the UnitAccessoryTypes table // (hint: using parameters we can reuse the sql statement multiple times) sql = "INSERT INTO UnitAccessoryTypes " + "(" + "AccessoryTypeID, " + "AccessoryTypeName " + ") " + "VALUES (" + "?," + "?" + ")";
dbManager.Execute(sql, 1, "Clothing"); dbManager.Execute(sql, 2, "Weapon");
// 4) Add some data to the UnitAccessories table // (hint: using parameters we can reuse the sql statement multiple times) sql = "INSERT INTO UnitAccessories " + "(" + "AccessoryID, " + "AccessoryName, " + "AccessoryTypeID, " + "Cost " + ") " + "VALUES (" + "?," + "?," + "?," + "?" + ")";
dbManager.Execute(sql, 1, "Mail Shirt", 1, 500); dbManager.Execute(sql, 2, "Helm", 1, 200); dbManager.Execute(sql, 3, "Sword", 2, 700); dbManager.Execute(sql, 4, "Fire Ring", 1, 2000);
// commit the transaction and update the database dbManager.Commit();
// update the version to 2 dbVersion = 2;
Debug.Log("Upgraded database to version 2"); } if (dbVersion == 2) { // the current version is at 2, we need to make some changes to get it to 3
// version 3 changes: // 1) Change the accessory type from "clothing" to "armor"
sql = "UPDATE UnitAccessoryTypes SET " + "AccessoryTypeName = ? " + "WHERE " + "AccessoryTypeID = ? ";
dbManager.Execute(sql, "Armor", 1);
// update the version to 3 dbVersion = 3;
Debug.Log("Upgraded database to version 3"); } if (dbVersion == 3) { // the current version is at 3, we need to make some changes to get it to 4
// version 4 changes: // 1) Add Rating column to UnitAccessories table // 2) Add Strength column to UnitAccessories table // 3) Update Rating and Strength values for each record in UnitAccessories table
// Begin a transaction to process multiple commands at once dbManager.BeginTransaction(); // 1) Add Rating column to UnitAccessories table sql = "ALTER TABLE [UnitAccessories] " + "ADD COLUMN Rating INTEGER";
dbManager.Execute(sql);
// 2) Add Strength colun to UnitAccessories table sql = "ALTER TABLE [UnitAccessories] " + "ADD COLUMN Strength INTEGER";
dbManager.Execute(sql);
// 3) Update Rating and Strength values for each record in UnitAccessories table sql = "UPDATE UnitAccessories SET " + "Rating = ?, " + "Strength = ? " + "WHERE " + "AccessoryID = ?";
dbManager.Execute(sql, 10, 300, 1); dbManager.Execute(sql, 20, 100, 2); dbManager.Execute(sql, 1, 40, 3); dbManager.Execute(sql, 500, 4, 4);
// commit the transaction dbManager.Commit();
// update the version dbVersion = 4;
Debug.Log("Upgraded database to version 4"); }
// update the database with the new version
sql = "UPDATE DatabaseSettings SET " + "SettingValue = ? " + "WHERE " + "SettingName = ?";
dbManager.Execute(sql, dbVersion, "DatabaseVersion"); } }
For more information, see chapter 13 of the user manual: User Manual
|
|
|
FAQ
Sept 18, 2018 19:49:55 GMT
Post by echo17 on Sept 18, 2018 19:49:55 GMT
Q: I'm using data types like BOOL and storing 'True' and 'False', why are they always being interpreted as false?SQLite only uses 5 basic data types: NULL, INTEGER, REAL, TEXT, and BLOB. To be safest, you should probably try to keep all your types as INTEGER, REAL, TEXT, and BLOB. Any other type you use will actually be converted to one of these types anyway (BLOB is a byte array), so it's up to you. This is entirely by design from the creators of the SQLite system. SimpleSQL uses this system as its database interpreter. Have a look at this link for more information: www.sqlite.org/datatype3.htmlFor BOOL types, try using 1's and 0's instead of text values like 'true' or 'yes'. The underlying SQLite library actually has no representation for BOOL, it will just try to interpret the data type as a string, float, or integer. Using 'True', 'False', 'Yes', 'No', etc. will make it think you want a text field, so SimpleSQL then believes that all values are false since the integer value of a text field is zero. Keep in mind that you can still use boolean in your class definition of a table and it will be interpreted and stored properly there, but on the database side it should be stored as integer values, no matter what type you assign your field. Please see this FAQ for information on how to store more complex data, like Vectors: FAQ
|
|
|
Post by echo17 on Sept 18, 2018 19:51:17 GMT
Q: Where is the working copy of my database located?SimpleSQL uses the application's working directory (persistent data path) to store your databases. This allows any platform supported to have full read / write access. If you do not already have a copy of the database in your working directory, SimplSQL will create one. If you already have a copy in your working directory, SimpleSQL will only overwrite it if you have "Overwrite if Exists" set to true on your SimpleSQLManager object. Use caution with this setting as it will overwrite any changes made at runtime. Overwrite should only be used if your database is static and will not change at runtime. The paths for Unity's working directory per platform are:
- Windows Editor and App (XP): C:\Documents and Settings\<user name>\Local Settings\Application Data\<company name>\<application name>
- Windows Editor and App (7): C:\Users\<user name>\AppData\LocalLow\<company name>\<application name>
- Mac Editor and App: /Users/<user name>/library/caches/<company name>.<application name>
- iOS: the documents directory for the device (i don't believe the simulator is used)
These paths can also be found at runtime using Unity's member: Application.persistentDatapath
|
|
|
FAQ
Sept 18, 2018 19:52:17 GMT
Post by echo17 on Sept 18, 2018 19:52:17 GMT
Q: Where can I find API documentation or a user guide?All links relevant to this plugin can be found on the webpage at: SimpleSQL PageDirect links: User ManualAPI
|
|
|
FAQ
Sept 18, 2018 19:53:07 GMT
Post by echo17 on Sept 18, 2018 19:53:07 GMT
Q: How do I store images in my database?You can store images directly in the database as a byte array using the database BLOB type (see Demo #7 included with SimpleSQL v2.6.0+). The image will need to be converted to (for storing) and from (for loading) a byte array to be mapped in the ORM. You can also store your image assets in a "Resources" folder somewhere in your project, then you use Resources.Load to load the images and use them in your scene. You will then just have to store a string path to the image resource in your database. docs.unity3d.com/Documentation/ScriptReference/Resources.Load.htmlThis is a good method because it keeps a clear distinction between data and assets. Please see this FAQ for a similar method of loading prefabs. You can adapt this to load images instead: link
|
|
|
FAQ
Sept 18, 2018 19:54:00 GMT
Post by echo17 on Sept 18, 2018 19:54:00 GMT
Q: How do I dynamically load a new database at runtime?You can dynamically load databases by placing them in a Resources folder located anywhere in your project. Then, at runtime, you can load your databases by using Unity's Resources.Load function and assigning the resultant object to your database manager. Finally, you'll call initialize to close previous connections and establish the new connection. Using the demo databases included with the plugin, here is some example code:
using UnityEngine; using System.Collections.Generic; using SimpleSQL;
public class LoadDatabase : MonoBehaviour { public SimpleSQLManager manager;
void Start () { // dynamically set the starting database to the Fantasy database TextAsset databaseFile = (TextAsset)Resources.Load("fantasy"); manager.databaseFile = databaseFile; manager.Initialize(true);
// load and display some data to show that it works List<Weapon> weapons = manager.Query<Weapon>("SELECT * FROM Weapon"); foreach (Weapon weapon in weapons) { Debug.Log(weapon.WeaponName); } }
void Update() { if (Input.GetKeyDown(KeyCode.C)) { // dynamically change database to the SciFi database TextAsset databaseFile = (TextAsset)Resources.Load("SciFi"); manager.databaseFile = databaseFile; manager.Initialize(true);
// load and display some data to show that it works List<PlayerStats> playerStats = manager.Query<PlayerStats>("SELECT * FROM PlayerStats"); foreach (PlayerStats playerStat in playerStats) { Debug.Log(playerStat.PlayerName); } } } }
Note that you still have to have a database assigned in the SimpleSQLManager's inspector at design time to avoid initialization errors. This can be any of your databases, including the ones in your resources folder. Here is Unity's documentation on the Resources.Load function: docs.unity3d.com/Documentation/ScriptReference/Resources.Load.htmlIf you are interested in loading a database from your application's persistent data path, have a look at this FAQ: linkIf you are interested in loading a database from a different location than your persistent data path, take a look at this FAQ: link
|
|
|
FAQ
Sept 18, 2018 19:54:55 GMT
Post by echo17 on Sept 18, 2018 19:54:55 GMT
Q: How do I use a database to load prefabs at runtime?Lets say you had some units that were stored in a database like this: You could then create an ORM class and prefab loader script like these:
using System.Collections.Generic; using SimpleSQL;
public class Prefab { [PrimaryKey] public int PrefabID { get; set; }
public string Name { get; set; }
public string Path { get; set; } }
using UnityEngine; using SimpleSQL;
public class LoadPrefab : MonoBehaviour { public SimpleSQLManager manager; public string unitName;
void Update () { // trigger the creation of a new gameobject. // we're using a keypress, but anything could trigger it. if (Input.GetKeyDown(KeyCode.C)) { // get the unit prefab from the database based on the unit name bool recordExists; Prefab unitPrefab = manager.QueryFirstRecord<Prefab>(out recordExists, "SELECT * FROM Prefabs WHERE Name = ?", unitName);
if (recordExists) { // grab the prefab gameobject from the Resources GameObject prefab = (GameObject)Resources.Load(unitPrefab.Path, typeof(GameObject));
// instantiate the prefab into the scene GameObject go = (GameObject)Instantiate(prefab); go.name = unitPrefab.Name; } } } }
Making sure your prefabs are in a Resources folder somewhere in your project: Running this, you'll be able to create prefabs from whatever unitName you specify. The database looks up the Resources path and loads the unit into the scene when you press the "C" key. Note that I used different paths for vehicles and stationary units. This just shows how you would store the relative paths to your Resources folder. In this example: "Vehicles/Tank", "Vehicles/Helicopter", "Stationary/Turret".
|
|
|
FAQ
Sept 18, 2018 19:56:03 GMT
Post by echo17 on Sept 18, 2018 19:56:03 GMT
Q: How do I load a database from my application's persistent data path (sandbox)?To load an database that isn't in your resources directory or your project's package, but is in your application's peristent data path, you can use something like the following code:
using UnityEngine; using System.Collections.Generic; using SimpleSQL;
public class LoadSandboxDatabase : MonoBehaviour { public SimpleSQLManager dbManager; public string fileName = "Fantasy";
void Start () {
dbManager.databaseFile.name = fileName; dbManager.Initialize(true);
List<Weapon> weapons = dbManager.Query<Weapon>("SELECT * FROM Weapons"); foreach (Weapon weapon in weapons) { Debug.Log(weapon.WeaponName + " " + weapon.Damage); } }
}
The most relevant part of this code being:
dbManager.databaseFile.name = fileName; dbManager.Initialize(true);
The databaseFile.name should be the path of the file in your application's persistent data path without the file extension. So if the database is named "Fantasy.bytes", then the file name should be "Fantasy". If you have the file inside a folder called MyDatabases under the application's persistent data path, then the file name should be "MyDatabases/Fantasy". Your application's persistent data path can be found using this code:
Debug.Log(Application.persistentDataPath);
docs.unity3d.com/Documentation/ScriptReference/Application-persistentDataPath.htmlNote: for this to work, the database manager needs to have an initial databaseFile set up in the inspector at runtime. You can use a blank database if necessary.If you are interested in loading a database from your Resources folder (embedded files), have a look at this FAQ: link
|
|
|
FAQ
Sept 18, 2018 19:56:50 GMT
Post by echo17 on Sept 18, 2018 19:56:50 GMT
Q: When compiling on Android, why do I get the error: "Missing Dll resource: SimpleSQL.Resources.sqlite3.dll.resource"
Be sure you upgrade to the latest version of SimpleSQL to avoid any old bugs. This was fixed in version 1.5.0
|
|
|
FAQ
Sept 18, 2018 20:00:22 GMT
Post by echo17 on Sept 18, 2018 20:00:22 GMT
Q: Where do I find the Invoice Number I received when I purchased the plugin?You can find the invoice number on the invoice pdf that Unity sent you after purchasing from the Asset Store.
|
|