Datum in Datenbank schreiben

Spezielle Fragen zu PostgreSQL, MySQL, SQLite, SQL ...
Antworten
Melsmann
Foriker
Beiträge: 16
Registriert: Do 9. Mai 2019, 11:18
Kontaktdaten:

Datum in Datenbank schreiben

Beitrag von Melsmann » Mo 3. Jun 2019, 11:48

Moin, Moin!

ich habe mal wieder ein Problem mit der SQL-Datenbank:
Über einen DateChooser gebe ich ein Datum ein. Egal, was ich anstelle, ich bekomme es nicht in eine Tabelle geschrieben. gambas code
Public Sub btnSpeichern_Click()

  Dim Datum As String
  datum = Format(DateChooser.Value, "yyyy-mm-dd")
  
  Select Message.Question("Sollen die Daten gespeichert werden?", "Ja", "Nein")
  Case 1
  query = "insert into Abrech_Stunden (Personal_ID, Datum, Stunden, Taetigkeit, Abgerechnet)values ('" & cboPerson.text & "','" & Datum & "','" & cboStunden.text & "','" & cboTaetigkeit.text & "','" & cboAbgerechnet.text & "')"
  databaseConnection.Exec(query)
  Fill  
  btnSpeichern.Enabled = False
  Case 2
  End Select
 Fill

End
Sondern bekomme die folgende Fehlermeldung:
Queiry failed: Data truncated for Column 'Stunden' at ....

Hat jemand ne Idee dazu?

Grüße Melsmann

Benutzeravatar
tionov
Site Admin
Beiträge: 300
Registriert: So 18. Mai 2014, 22:40
Kontaktdaten:

Re: Datum in Datenbank schreiben

Beitrag von tionov » Mo 3. Jun 2019, 14:05

Was für eine Datenbank?

Das was du da machst scheint mir sehr gefährlich. Kann da jemand freien Text eingeben? Das macht SQL-Injections möglich. Schon aus diesem Grund ist es sehr schlechter Stil, einen Text-String aus einer Formularfeld ungeprüft in einen SQL String zu übernehmen und diesen die DB ausführen zu lassen.

Bevor du deine eigenen Prüfroutinen schreibst, ist es besser, das Gambas machen zu lassen.

Nimm einfach für ein Insert ein Gambas Result:
http://gambaswiki.org/wiki/comp/gb.db/result

Und zwar ein mit Create erstelltes:
http://gambaswiki.org/wiki/comp/gb.db/_ ... on/create/

Dann kannst du schreiben:
gambas code
Dim res as Result

res = DBCon.Create("Abrech_Stunden")
res!Datum = DateChooser.Value
'... usw ...
res.Update
Alles Gute,

tionov

Melsmann
Foriker
Beiträge: 16
Registriert: Do 9. Mai 2019, 11:18
Kontaktdaten:

Re: Datum in Datenbank schreiben

Beitrag von Melsmann » Mo 3. Jun 2019, 15:45

Erstmal vielen Dank für deine schnelle Antwort.

Mein Weg war der Weg, den ich bei MS VB gegangen bin und den ich kannte. So weit, so gut ! :D

Kann ich durch den von Dir skizzierten Weg mein gesamtes INSERT ersetzen? Was prüft Gambas da ab? Kann ich diesen Weg auch für UPDATE benutzen?

Gruß Melsmann

Benutzeravatar
tionov
Site Admin
Beiträge: 300
Registriert: So 18. Mai 2014, 22:40
Kontaktdaten:

Re: Datum in Datenbank schreiben

Beitrag von tionov » Mo 3. Jun 2019, 16:47

Melsmann hat geschrieben:
Mo 3. Jun 2019, 15:45
Kann ich durch den von Dir skizzierten Weg mein gesamtes INSERT ersetzen? Was prüft Gambas da ab? Kann ich diesen Weg auch für UPDATE benutzen?
Natürlich kann dein ganzes Insert so behandelt werden, dafür schrieb ich die drei Pünktchen. Vielleicht magst du es mal ausprobieren?

Update geht ebenfalls mit dem Result-Objekt, schau dir die Methoden an:
http://gambaswiki.org/wiki/comp/gb.db/result

Create Read/Write
Edit Read/Write
Exec Read Only
Find Read Only
Was prüft Gambas da ab?
Tja, da bleibt dir nur ein Blick in die Gambas-Sourcen, wenn du diese Frage abschließend beantwortet wissen willst. Ich gehe davon aus, dass Gambas einen Fehler wirft, wenn du mit diesen Methoden einem Date-field der DB einen Textstring unterjubeln möchtest. Und es wird verhindern, dass du einen Textstring mit Zeichen versiehst, die SQL Injections ermöglichen.

https://de.wikipedia.org/wiki/SQL-Injection

Schlicht, ich weiß es nicht. Das hängt aber alles von der DB ab, darum fragte ich, welche DB? Hier findest du z.B. die Sourcen für Sqlite3:
https://gitlab.com/gambas/gambas/tree/m ... db.sqlite3

Beschäftige dich mal mit http://gambaswiki.org/wiki/comp/gb.db
Alles Gute,

tionov

Melsmann
Foriker
Beiträge: 16
Registriert: Do 9. Mai 2019, 11:18
Kontaktdaten:

Re: Datum in Datenbank schreiben

Beitrag von Melsmann » Mo 3. Jun 2019, 18:02

Dank Dir nochmal für die Tipps.

Ich werde mir die Links mal zu Gemüte führen. :D

Gruß Melsmann

Benutzeravatar
tionov
Site Admin
Beiträge: 300
Registriert: So 18. Mai 2014, 22:40
Kontaktdaten:

Re: Datum in Datenbank schreiben

Beitrag von tionov » Di 4. Jun 2019, 06:28

Melsmann hat geschrieben:
Mo 3. Jun 2019, 18:02
Dank Dir nochmal für die Tipps.

Ich werde mir die Links mal zu Gemüte führen. :D
Aber gerne, wenn du weitere Fragen hast, nur zu ... :-)
Alles Gute,

tionov

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste