Jump to content
Unity Insider Forum
  • Announcements

    • Lars

      Allgemeine Forenregeln   03/13/2017

      Forenregeln Nimm dir bitte einen Moment um die nachfolgenden Regeln durchzulesen. Wenn du diese Regeln akzeptierst und die Registration fortsetzen willst, klick einfach auf den "Mit der Registrierung fortfahren"-Button. Um diese Registration abzubrechen, klick bitte einfach auf den "Zurück" Button deines Browsers. Wir garantieren nicht für die Richtigkeit, Vollständigkeit und Brauchbarkeit der Nachrichten und sind auch nicht dafür verantwortlich. Die Beiträge drücken die Meinung des Autors des Beitrags aus, nicht zwangsläufig das, wofür die Forensoftware steht. Jeder Nutzer, der denkt, dass ein veröffentlichter Beitrag unzulässig bzw. störend ist, ist aufgefordert uns unverzüglich per E-Mail zu kontaktieren. Wir haben das Recht störende Beiträge zu löschen und bemühen uns, das in einem realistischem Zeitraum zu erledigen (sofern wir beschlossen haben, dass die Löschung notwendig ist). Du akzeptierst, durchgehend während der Nutzung dieses Services, dass du dieses Forum nicht dazu missbrauchen wirst, Inhalte zu veröffentlichen, welche bewusst falsch und/oder verleumderisch, ungenau, beleidigend, vulgär, hasserfüllt, belästigend, obszön, sexuell belästigend, bedrohlich, die Privatsphäre einer Person verletzend oder in irgend einer Art und Weise das Gesetz verletzen. Des Weiteren akzeptierst du, dass du keine urheberrechtlich geschützte Inhalte ohne Erlaubnis des Besitzers in diesem Forum veröffentlichst. Mit dem Klick auf den "Mit der Registrierung fortfahren"-Button, akzeptierst du zudem unsere Datenschutzerklärung und stimmst der Speicherung deiner IP-Adresse und personenbezogenen Daten zu, die dafür benötigt werden, um dich im Falle einer rechtswidrigen Tat zurückverfolgen zu können bzw. permanent oder temporär aus dem Forum ausschließen zu können. Es besteht keine Pflicht zur Abgabe der Einwilligung, dies erfolgt alles auf freiwilliger Basis.   Zusatzinformationen Der Forenbetreiber hat das Recht, Nutzer ohne Angabe von Gründen permanent aus dem Forum auszuschließen. Des Weiteren hat er das Recht, Beiträge, Dateianhänge, Umfrage, Blogeinträge, Galleriebilder oder Signaturen ohne Angabe von Gründen zu entfernen. Mit der Registrierung verzichtest du auf alle Rechte an den von dir erstellten Inhalten, bzw. treten diese an das Unity-Insider.de und Unity-Community.de ab. Dies bedeutet im Klartext, dass das Unity-Insider.de und Unity-Community.de frei über deine Texte verfügen kann, sofern diese nicht wiederum die Rechte anderer verletzen. Es besteht weiterhin kein Anspruch von registrierten Nutzern bzw. ehemaligen registrierten Nutzern darauf, dass erstellte Inhalte und/oder die Mitgliedschaft (User) wieder gelöscht werden (Erhaltung der Konsistenz dieses Forums).   Einwilligungserklärung Wenn du mit der Speicherung deiner personenbezogenen Daten sowie den vorstehenden Regeln und Bestimmungen einverstanden bist, kannst du mit einem Klick auf den Mit der Registrierung fortfahren-Button unten fortfahren. Ansonsten drücke bitte Zurück. Stand: 07.03.2011
bla_92

SQLite, Android und Unity

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 :)

Share this post


Link to post
Share on other sites

Was klappt denn nicht? Gibt es eine Fehlermeldung? Was hast du verändert?

Wenn das der  Originalcode ist, sollte in dieser Zeile schon mal eine Fehlermeldung kommen:

 

dbcon = new SqliteConnection(conn;

Schließende Klammer fehlt.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Nein hab ich nicht. Direkt am Handy kann ich die Berechtigungen nicht auswählen. Kann ich das denn im Skript machen?

Share this post


Link to post
Share on other sites

ich greif die Frage von @Hrungdak nochmal auf: Gibt es eine Fehlermeldung?

 

lass dir mal mit Debug ausgeben, ob deine File Locations alle stimmen... 

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×