![]() |
Datenbank: Jede • Version: alle • Zugriff über: NativeDB, ODBC
Floatwerte in Datenbanken speichern
Moinsn..
Ich habe da folgende Frage... wenn Ich einen Floatwert in eine DB, in diesen Fall MS SQL 2012 aber das spielt keine Rolle, schreiben möchte über eine normale SQl query wie.. Update Test set Kohle = '123.34' where Rowid = 1 Dann darf das natürlich nicht '123,34' heissen sonst knallt es. Wenn man aber die SQL Abfragen individuell baut sind das nun mal Strings. So etwa : DM.DatMod.oq3.SQL.Add(' Update Test set Kohle = ''' + s + ''' '); 'S' darf hier natürlich kein Float sein. Da aber selbst die StrToFloat Methode den Wert mit Komma zurück gibt weil wir halt in Deutschland sind ist das doof. Ich finds ja toll das Windows und die Datenbanken mir in Deutschland ein Komma als Dezimaltrenner hinpinseln auch wenn in der DB ein Punkt steht, aber an dieser Stelle ist das echt Mist. Klar, Ich kann natürlich statt Floats einfach Strings nehmen und schon klappt das. Aber mit Strings rechnet man so schlecht... Ich suche nun einen Weg meine Inszantvariablen als Float zu deklarieren und gleichzeitig keine Probleme zu habe wenn Ich sie in die DB schreiben möchte. Im Moment konvertiere ich das hin und her - aber mal ehrlich, wie Elegant ist das denn? Ja, Ich weiß...da gibt es was mit Formatierunseinstellungen aber Ich möchte meiner Applikation nicht vorgauckeln in Amiland zu sein. Naja, vermutlich ist das so banal das ich mich grad zur Lachnummer mache, aber wenn Ich eins kann dann das :) es grüßt.. der Frank |
AW: Floatwerte in Datenbanken speichern
Verwende Parameter.
|
AW: Floatwerte in Datenbanken speichern
Die vorstehende Antwort mit den Parametern ist die bessere Wahl ,
also etwas so
Delphi-Quellcode:
der Paramert , im Beispiel "Wert" kann eine beliebige Zeichenfolge sein
query.sql.clear;
query.sql.add('update TEST set KOHLE=:WERT'); query.sql.prepare query.parambyname('WERT').asfloat= 123.45; query.execsql; wichtig das der Doppelpunkt davor alternativ einfach ein Stringreplace und das Komma mit einem Punkt ersetzten mfg Hannes |
AW: Floatwerte in Datenbanken speichern
Zitat:
![]() Nja, falls dein Delphi passt, wobei du ja nicht nennst was du verwendest. Ansonsten wurden die Parameter ja bereits genannt und sie sind auch gleich gut gegen eine SQL-Injection, z.B. wenn man
Delphi-Quellcode:
in dein S reinbekommt.
1"; DROP DATABASE xxx;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz