Laden...

Array in Datenbank schreiben

Erstellt von GnR1993 vor 12 Jahren Letzter Beitrag vor 12 Jahren 8.023 Views
G
GnR1993 Themenstarter:in
8 Beiträge seit 2011
vor 12 Jahren
Array in Datenbank schreiben

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

B
357 Beiträge seit 2010
vor 12 Jahren

-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?

G
GnR1993 Themenstarter:in
8 Beiträge seit 2011
vor 12 Jahren

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.

D
63 Beiträge seit 2011
vor 12 Jahren

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?

G
GnR1993 Themenstarter:in
8 Beiträge seit 2011
vor 12 Jahren

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 😉

502 Beiträge seit 2004
vor 12 Jahren

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...

D
63 Beiträge seit 2011
vor 12 Jahren

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?

G
GnR1993 Themenstarter:in
8 Beiträge seit 2011
vor 12 Jahren

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

B
357 Beiträge seit 2010
vor 12 Jahren

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.

F
10.010 Beiträge seit 2004
vor 12 Jahren

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.