Hallo,
ich stehe momentan vor einem kleinen Problem, und habe schon das ganze Internet danach abgesucht, aber nix diesbezüglich gefunden.
Ich fülle durch eine Funktion eine Array list, welche (mindestens) 1024 werte hat (je nach dem, wie es final aussehen wird, kann es auch sein, dass die Listen an die 20.000 werte haben werden.
Nun möchte ich diese Listen in einer Datenbank speichern.
Wie mache ich das am besten? ich habe mir schon mal die Array Serialisierung angeschaut, bin dabei aber noch nicht wirklich weiter gekommen.
Ich freue mich über jede Antwort und jeden Hinweis, der mich meinem Ziel näher Bringt
MfG
GnR1993
-Datenbankverbindung herstellen
-Schleife erstellen, die dein Array durchläuft.
-INSERT INTO... in der Schleife als Command erstellen
-ExecuteNonQuery() nicht vergessen
-DB-Verbindung schließen
Oder ist das Problem an anderer Stelle?
Jein ..
ich möchte gerne ein Array Pro zeile haben. Und nicht die Ganze Tabelle mit einem Array füllen. Weißt, was ich meine? ...
also Zeile eins: array1 mit 1024 zeichen
Zeile zwei: array2 mit 1024 zeichen
...
ich möchte halt wav Dateien in eine Datenbank schreiben (teile daraus). Diese wav Dateien habe ich schon in Arrays geschrieben.
Jetzt erstmal die Frage:
-ist es sinvoller die wave dateien beim schreiben in die datenbank umzuwandeln
oder
-die wave dateien so in die Datenbank zu schreiben und dann beim Auslesen zu bearbeiten.
Ich darf nur Arrays von 1024 haben. Länger düfen sie nicht sein.
also hast du eigendlich ein mehrdimensionales array oder wie ist das jetzt zu verstehen? o.O
edit:
noch ne frage, warum speicherst du überhaupt die wav dateien in die Datenbank? o.o warum kopierst du dir die nicht in nen ordner oder ne ordner struktur und speicherst dann einfach nur den pfad dahin ab?
Die daten sollen halt schon vorbearbeitet werden... heißt nur bestimmte samples aus den Arrays 😉 ... und jede Wave soll halt als Array list in ne Datenbank...
Also ich nehme halt ne bestimmte wav auf .. bearbeite sie, dass ich nur die 1024 lied samples habe und danach sollen sie halt abgespeichert werden.
Bisher sind die ganzen samples halt in einzelnen text Dateien, ich will sie aber in ner Datenbank haben und zwar alle 😉
Klingt für mich entweder nach "suboptimaler Datenbankstruktur" oder aber (ich kenne die Anforderungen nicht wirklich) nach einem Anwendungsfall für den SQL Datentyp varbinary in dem Du ein byte[] ablegen kannst.
Bart Simpson
Praxis ist wenn alles funktioniert und keiner weiss warum.
Theorie ist wenn man alles weiss, aber nichts funktioniert.
Bei uns wird Theorie und Praxis vereint: Nichts funktioniert und keiner weiss warum...
Also um das für mich gerade mal "grafisch" da zustellen.
Du hast
->* Wav 1 -> * Liedsamples
sagen wir du hälst die Inhalte deiner wav - Dateien als Strings dann müsstest du
string[][] wavArray = methodeDieMirEinMehrdimsinalesArrayZurueckGibt();
for(int i = 0;i <wavArray.length; i++){
for(int j = 0;j <wavArray[i].length; j++){
/* Hier werden dann die Daten vorbereitet um sie in die Datenbank zu
schreiben oder du sie werden gleich weg geschrieben
*/
}
}
Da ich jetzt net weiß welchen Datentyp ich für wav Dateien brauche hab ich einfach mal string genommen sollte da ein andere passender sein nimm den und nja beantwortet das deine frage?
Das mit dem String ist schon ganz richtig ... also entweder string oder int ..
jo .. nur mein Problem ist .. wie kann ich so lange strings in eine Datenbank schreiben .. der meckert da immer rum, dass der string zu lang ist. Ich hab aber keine lust den x mal zu splitten und dann wieder zusammen zu führen. Ich muss dazu sagen: ich will es nicht in eine mysql datenbank schreiben, weil ich keinen server dafür aufsetzen will, sondern in eine access datenbank datei, damit man das ganze recht einfach Kopieren kann, ohne in einen server zu schreiben. (mysql datenbank vllt. in der Zukunft)..
also ich mach aus dem inhalt meiner wav dateien eine array list.
dann müste ich doch nach der beschreibung sowas machen
string in_db_schreiben = "";
foreach(element i in arrlist)
{
in_db_schreiben += "|" +i.ToString();
}
Danach schreibe ich das ganze in eine Datenbank.
Wenn ich nun die Daten aus der datenbank holen will, schreibe ich mir das ganze erstmal wieder in einen String "aus_db_lesen"
string[] wav = aus_db_lesen.Split('|');
int i = 0;
foreach(element i in wav)
{
if(i > 0)
{
arrlist.Add(wav);
//oder was auch immer ich damit anstellen will aber arraylist ist schon ganz gut :D
}
i++
}
Oder wie meint ihr das? ... gibt es nich ne möglichkeit das ganze gekürzt abzuspeichern ohne daten zu verlieren ? 😄 ...
MfG
Klar, Textfelder in Access sind auf 255 Zeichen begrenzt. Stell das Feld von "Text" auf "Memo" um und du solltest das Problem umschiffen können.
Klar, indem du das Feld in der DB richtig dimensionierst.
Es darf dann natürlich kein TextFeld sein sondern ein Image wie Mr. Bart Simpson schon sagte.
Und um es mit der Moderation des Forums zu sagen:
ArrayList gehört in die Mottenkiste und sollte wie alle untypisierten Collections aus System.Collections nicht mehr benutzt werden. Verwende stattdessen List<T> und alle anderen typisierten Collections aus System.Collections.Generic.
@Dijon:
Wenn du etwas nicht weist, hilft es keinem wenn du irgendwas postest.