Jump to content
Unity Insider Forum

SQLite, Android und Unity


bla_92

Recommended Posts

Hallo zusammen,

ich habe mal wieder ein Problem mit Unity.

Ich habe eine Datenbank mit SQLite angelegt und möchte diese in meinem Projekt auslesen (und später auch bearbeiten).

Das Ganze soll letztendlich auf einem Android Smartphone laufen. Genau hier liegt das Problem, denn auf dem PC lief es bereits.

Nachfolgend meine Änderungen damit es auf dem Smartphone läuft ( was nicht geklappt hat :unsure:)

 

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

public class Testdatenbank : MonoBehaviour {
	
   	private IDbConnection dbcon;
    // Use this for initialization
    void Start () {

        string path = Application.persistentDataPath + "/Testdb.s3db";

        if (!File.Exists(path))
        {WWW loadDB = new WWW("jar:file://" + Application.dataPath + "!/assets/" + "Testdb.s3db"); 

            while (!loadDB.isDone) { }  

            File.WriteAllBytes(path, loadDB.bytes);
       	}

     	string conn = "URI=file:" + path;
        dbcon = new SqliteConnection(conn;
        dbcon.Open();
        IDbCommand dbcmd = dbcon.CreateCommand();
        

        string sqlQuery = "SELECT *" + "FROM Test";
        dbcmd.CommandText = sqlQuery;
        IDataReader reader = dbcmd.ExecuteReader();

        while (reader.Read())
        {
 
            string vorname = reader.GetString(0);
            string name = reader.GetString(1);
            Debug.Log("Vorname= " + vorname + "  Name=" + name);
          
        }
        reader.Close();
        reader = null;
        dbcmd.Dispose();
        dbcmd = null;
        dbcon.Close();
        dbcon = null;
	}
}

Hat jemand eine Idee was ich falsch mache?

Danke für jede Hilfe :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nein ich hab es etwas abgeändert damit man auch versteht was ich da treibe :D

seither hatte ich mich an einem Codebeispiel aus dem Internet orientiert:

     string conn = "URI=file:" + Application.dataPath + "/PickAndPlaceDatabase.s3db"; //Path to database.
     IDbConnection dbconn;
     dbconn = (IDbConnection) new SqliteConnection(conn);
     dbconn.Open(); //Open connection to the database.
     IDbCommand dbcmd = dbconn.CreateCommand();
     string sqlQuery = "SELECT value,name, randomSequence " + "FROM PlaceSequence";
     dbcmd.CommandText = sqlQuery;
     IDataReader reader = dbcmd.ExecuteReader();
     while (reader.Read())
     {
         int value = reader.GetInt32(0);
         string name = reader.GetString(1);
         int rand = reader.GetInt32(2);
        
         Debug.Log( "value= "+value+"  name ="+name+"  random ="+  rand);
     }
     reader.Close();
     reader = null;
     dbcmd.Dispose();
     dbcmd = null;
     dbconn.Close();
     dbconn = null;
 }

Das hat prima am Pc geklappt. Am Handy kommt keine Fehlermeldung. Die Anwendung stürzt direkt ab

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich bin mittlerweile soweit, dass der Dateipfad stimmt aber es abstürzt sobald ich in der Zeile

IDataReader reader = dbcmd.ExecuteReader();

an komme strüzt es ab und gibt folgende Fehlermeldung aus:

SqliteSyntaxException: no such table: Testdb

In dem von mir aufgerufenen Dateipfad befindet sich allerdings die Tabelle
 

 

Ich sehe allerdings gerade, dass die Datenbank dort leer ist. Im eigentlichen Unity Verzeichnis sind meine Tabellen noch vorhanden

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...