Kuxii Geschrieben 20. März 2018 Melden Share Geschrieben 20. März 2018 Hey leute, Bastel mir Gerade für mein Hooby eine Art Digitalen Katalog, Die Daten Sätze werden in einer Sql daten Bank Gespeichrt, Nun mochte ich immer eine Bestimmte anzahl an werten Ausgeben (Wie eine Art Liste) Wie bewekstelle ich das nun am einfachsten? Hatte an immer 10 "Loks" Gedacht die Angezeigt werden und die anderen wenn man Scrollt, Wenn ich nun eh Schon dabei bin, Wie könnte ich am bessten einen Bilder Updloader Bauen?^^ Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 20. März 2018 Melden Share Geschrieben 20. März 2018 Die folgenden SQLs sollten in SQLite funktionieren, um Daten in 10-Schritten zu "fetchen". (ODER BY usw. habe ich der weggelassen, dies müsstest du noch definieren., damit du immer eine fest definierte Reihenfolge bekommst z.b. ORDER BY rowid ASC) Die ersten 10 Zeilen der Tabelle abfragen: SELECT * FROM COMPANY LIMIT 10; Die nächsten 10-20 Zeilen der Tabelle abfragen: SELECT * FROM COMPANY LIMIT 10 OFFSET 10; Die nächsten 20-30 Zeilen der Tabelle abfragen: SELECT * FROM COMPANY LIMIT 10 OFFSET 20; usw. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kuxii Geschrieben 20. März 2018 Autor Melden Share Geschrieben 20. März 2018 hey, ja das wäre auch eine Möglichkeit, ich dachte mir alles in eine liste und dann für das ui ein prefab das es dann nur "Spawnt". [System.Serializable] public class TrainData : System.Object { public string DbBaureihe; public string DbFarbe; public int DbLokTyp; public int DbHersteller; public string DbKatalognummer; public string DbSeriennummer; public string DbKaufdatum; public string DbPreis; public string DbWartung; public string DbAdresse; public int DbProtokoll; public int DbFahrstufen; public string DbDecHersteller; public string DbDecID; public bool DbRauch; public bool DbSound; public bool DbROTWEISS; public bool DbBeleuchtung; public bool DbPandos; public bool DbTelex; public bool DbElekKupplung; } public List<TrainData> Trains; public void GetTrainData() { SqliteConnection dbConnection = new SqliteConnection("Data Source = " + (Application.dataPath + "/" + "Databases" + "/" + DatabasesName)); dbConnection.Open(); try { SqliteCommand cmd = new SqliteCommand("SELECT * FROM Trains", dbConnection); SqliteDataReader reader = cmd.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { foreach(TrainData TrainData in Trains) { TrainData.DbBaureihe = reader.GetString(0); TrainData.DbFarbe = reader.GetString(1); TrainData.DbLokTyp = reader.GetInt16(2); } } } reader.Close(); reader = null; } catch (SqliteException ex) { Debug.LogError(ex); Debug.Log("Error reading DB"); } dbConnection.Close(); dbConnection = null; Debug.Log("Database reading Done.!"); } Aktuell Hatte ich versucht das Alles in eine Große Liste zu Packen, und diese werte dan auf UI-Texten wieder zu geben Er öffnet DB und alles Keine fehler, Jedoch Trägt er nichts in der Liste ein Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 20. März 2018 Melden Share Geschrieben 20. März 2018 So sollte es gehen: public List<TrainData> Trains; public void GetTrainData() { Trains = new List<TrainData>(); // HAT GEFEHLT SqliteConnection dbConnection = new SqliteConnection("Data Source = " + (Application.dataPath + "/" + "Databases" + "/" + DatabasesName)); dbConnection.Open(); try { SqliteCommand cmd = new SqliteCommand("SELECT * FROM Trains", dbConnection); SqliteDataReader reader = cmd.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { TrainData trainData = new TrainData(); trainData.DbBaureihe = reader.GetString(0); trainData.DbFarbe = reader.GetString(1); trainData.DbLokTyp = reader.GetInt16(2); Trains.Add(trainData); } } reader.Close(); reader = null; } catch (SqliteException ex) { Debug.LogError(ex); Debug.Log("Error reading DB"); } dbConnection.Close(); dbConnection = null; Debug.Log("Database reading Done.!"); } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 20. März 2018 Melden Share Geschrieben 20. März 2018 Du kannst natürlich auch die ganze Tabelle auf einmal in eine Liste laden (siehe oben) und dann diese Liste in der UI "zerteilen", dies macht man aber nur bei kleineren Datenmengen. Wenn man dann mal so 500000 Sätze in einer Tabelle, sollte man schrittweise "Fetchen", also siehe meine Lösung oben. Man läd dabei Daten aus einer Datenbank beispielsweise in 100er oder 1000er Schritten ... Man kann die beiden Varianten auch Mischen (also man fetched beispielsweise 1000 Zeilen aus der DB und zeigt in der UI in 10er Schritten an) Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Kuxii Geschrieben 20. März 2018 Autor Melden Share Geschrieben 20. März 2018 vor 35 Minuten schrieb Zer0Cool: So sollte es gehen: public List<TrainData> Trains; public void GetTrainData() { Trains = new List<TrainData>(); // HAT GEFEHLT SqliteConnection dbConnection = new SqliteConnection("Data Source = " + (Application.dataPath + "/" + "Databases" + "/" + DatabasesName)); dbConnection.Open(); try { SqliteCommand cmd = new SqliteCommand("SELECT * FROM Trains", dbConnection); SqliteDataReader reader = cmd.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { TrainData trainData = new TrainData(); trainData.DbBaureihe = reader.GetString(0); trainData.DbFarbe = reader.GetString(1); trainData.DbLokTyp = reader.GetInt16(2); Trains.Add(trainData); } } reader.Close(); reader = null; } catch (SqliteException ex) { Debug.LogError(ex); Debug.Log("Error reading DB"); } dbConnection.Close(); dbConnection = null; Debug.Log("Database reading Done.!"); } So geht es leider auch nicht, Setzt die Liste auf 0 Einträge, mit meiner Lösung hatte ich mittlerweile schon alle daten drinn aber immer nur vom Letzten Eintrag :/ EDIT Geht nun Fehler gefunden Gut nun noch das UI Basteln und schauen wie ich Die werte Hinzauber DANKE Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 20. März 2018 Melden Share Geschrieben 20. März 2018 Ich kann es nicht testen, habe deinen Code nicht, sollte aber so gehen wie ich es gepostet habe. Die Liste wird gelöscht ja, so soll es ja auch sein und über die untere Schleife gefüllt. An dieser Stelle werden die Daten eingelesen und in die Liste geschrieben: while (reader.Read()) { TrainData trainData = new TrainData(); trainData.DbBaureihe = reader.GetString(0); trainData.DbFarbe = reader.GetString(1); trainData.DbLokTyp = reader.GetInt16(2); Trains.Add(trainData); print("Daten hinzugefügt :" + trainData.DbBaureihe); print("Daten hinzugefügt :" + trainData.DbFarbe); print("Daten hinzugefügt :" + trainData.DbLokTyp); } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.