# String array in SQL



## dannyli (28 Mai 2009)

Hallo zusammen

Ich lese mit libnodave Daten aus einem DB (Strings) diese String Arrays möchte ich nun in eine SQL DB schreiben. Die Werte in den string array ändern sich ständig und ich will diese werte sozusagen archivieren. kann mir jemand bei dieser sache Helfen. Ich Programmiere mit VB2008 und möchte gerne den darin enthaltenen _SQL Server Compact 3.5 nutzen.

Gruß dannyli
_


----------



## Human (29 Mai 2009)

Hi dannyli,

ich mach zwar kein VB, das was ich dir jetzt hintipse kann sein, dass es syntaktisch nicht ganz passt, aber das kannst du dann sicher korrigieren! 


```
dim data(16) as byte // dein Array aus Bytes
dim str as String // dein String in dem nacher das Ergebnis drin ist
dim offset as integer
dim length as integer
 
// i = offset + 2 weil erst ab dem 3. Byte der Tatsächliche String steht,
// 1. Byte Maximallänge des Strings, 2. Byte Tatsächliche Länge des Strings
 
offset = 0 // das 1. Byte deines Strings
length = data(offset + 1) // die Länge des Strings (2. Byte)
str = "" // String initialisieren
for i = offset + 2 to length + offset
  str = str + Chr(data(i)) // Chr() <-- Byte in Char wandeln, Buchstabe an String anhängen
```
 
Ich hoffe, dass ich dir damit helfen konnte!

Edit: Mal wieder ein paar Begriffe gelesen und doch nicht ganz gelesen...

Ein paar Videos wie man das mit den Datenbanken in VB machen kann von Microsoft: http://msdn.microsoft.com/de-de/bb466226.aspx?wt.slv=RightRail

Und dann noch eine Seite, die ich auch hin und wieder gerne mal aufsuche: http://www.connectionstrings.com/


----------



## Zottel (29 Mai 2009)

dannyli schrieb:


> Hallo zusammen
> 
> Ich lese mit libnodave Daten aus einem DB (Strings) diese String Arrays möchte ich nun in eine SQL DB schreiben. Die Werte in den string array ändern sich ständig und ich will diese werte sozusagen archivieren. kann mir jemand bei dieser sache Helfen. Ich Programmiere mit VB2008 und möchte gerne den darin enthaltenen _SQL Server Compact 3.5 nutzen.
> 
> ...


So etwas wie ein Array von Strings kennt SQL nicht. Um genau zu sein: SQL ist nur die Sprache, in der man  mit der Datenbank kommuniziert. Was die Datenbank kann, ist prinzipiell eine andere Sache...
Der gängigste Weg wäre meines Erachtens, daß eine Tabelle String-artige Felder (feste oder variable Länge) enthält. Jedem String in der SPS entspräche eine Spalte (Feld).
Eine Zeile der Tabelle würde dann eine "Momentaufnahme" der Strings in der SPS aufnehmen.
Ich weiß nicht, wie es in VB ist, aber gewöhnlich nutzt man aus einer beliebigen Programmiersprache einen Datenbanktreiber, um ihm SQL-Anweisungen und Feldwerte zu übergeben. Wenn das für dich neu ist, würde ich es erst ohne Libnodave und mit Dummy-Daten probieren.


----------



## dannyli (29 Mai 2009)

Hallo Zottel

danke für deine Hilfe werde mich gleich mal ransetzen und mir das alles mal anschauen und dann sehen wir mal weiter. wenn man bedenkt das ich erst seit so kurzer zeit mit Hochsprachen bzw. libnodave arbeite bin ich dank eurer Hilfe schon ganz schon weit gekommen und diese etappe werde ich auch noch schaffen.....


----------



## Jochen Kühner (30 Mai 2009)

*beispiel...*

kannst dir auch meinen protokoller ansehen:

ist ein windows dienst der werte aus einer sps (auch strings) in einen db speichert: http://sps-forum.de/showthread.php?t=26264

hat gerade noch das problem das max ca. 240 byte bei einer 300er cpu archiviert werden können (pdu länge), aber da bin ich dran.


----------

