AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Prism ODBC.Net, OdbcParameter, Zuweisung von Parametern für SQL

ODBC.Net, OdbcParameter, Zuweisung von Parametern für SQL

Ein Thema von r_kerber · begonnen am 27. Okt 2004 · letzter Beitrag vom 27. Okt 2004
Antwort Antwort
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#1

ODBC.Net, OdbcParameter, Zuweisung von Parametern für SQL

  Alt 27. Okt 2004, 18:28
Moin moin,

in D8 greife ich über ODBC.Net (OdbcConnection, OdbcDataAdapter und OdbcCommand) zu. In der WHERE-Klausel des Select-Statements verwende ich Parameter:
Delphi-Quellcode:
  comSelectAnsetzungen.CommandText :=
    'SELECT * FROM ansetzungen WHERE Saison = ? AND mannschaft_id = ?';
  comSelectMannschaften.Parameters.Add('@saison', OdbcType.VarChar, 10).Value :=
    sSaison;
  comSelectMannschaften.Parameters.Add('@mannschaft_id', OdbcType.Int).Value :=
     iMannschaft;
Nun sollen die Parameter zugewiesen werden. Die Zweisung des ersten Paramters (Varchar) funktioniert problemlos. Bei der Zuweisung des zweiten Parameters meldet Delphi einen Fehler:
Zitat:
[Fehler] ttVoranOheService.pas(580): Inkompatible Typen: 'Object' und 'Integer'
Im C#-Beispiel bei MSDN steht jedoch folgendes:
Code:
myDataAdapter.SelectCommand.Parameters.Add("@SerialNum", OdbcType.Int).Value = 239
Wie setze ich das nun in Delphi um?
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: ODBC.Net, OdbcParameter, Zuweisung von Parametern für SQ

  Alt 27. Okt 2004, 18:32
Hi,
hast du schonmal versucht den Integer in einen String umzuwandeln? Das wäre ja auch ein Objekt.

Chris
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#3

Re: ODBC.Net, OdbcParameter, Zuweisung von Parametern für SQ

  Alt 27. Okt 2004, 18:36
Habe ich, dann bekomme ich Laufzeitfehler!
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: ODBC.Net, OdbcParameter, Zuweisung von Parametern für SQ

  Alt 27. Okt 2004, 18:39
Hi,
hm... und wenn du den String wieder in einen Integer umwandelst?
Hört sich zwar jetzt an, wie eine nicht sehr saubere Lösung, aber ich vermute mal dass das ein Bug ist. Aber ist dir das schonmal passiert?

Chris
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#5

Re: ODBC.Net, OdbcParameter, Zuweisung von Parametern für SQ

  Alt 27. Okt 2004, 18:43
Zitat von r_kerber:
Habe ich, dann bekomme ich Laufzeitfehler!
Kommando zurück. Mit dem String geht's jetzt! Muß ich gestern abend etwas falsch geamcht haben.
Bleibt weiterhin die Frage, warum das nicht mit Inter-Parametern geht. IMHO ist Int in C# ja eine Klasse und in Delphi offenbar ein "primitiver" Datentyp.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#6

Re: ODBC.Net, OdbcParameter, Zuweisung von Parametern für SQ

  Alt 27. Okt 2004, 18:52
Zitat von r_kerber:
IMHO ist Int in C# ja eine Klasse und in Delphi offenbar ein "primitiver" Datentyp.
Integer sind auch in C# primitive Typen, allerdings unterstützt C# das sagenannte Auto-Boxing. Dieses kann leider auch zu Fehlern führen und ist deshalb in Delphi per Default aus. Also entweder:
comSelectMannschaften.Parameters.Add('@mannschaft_id', OdbcType.Int).Value := TObject(iMannschaft); oder
Delphi-Quellcode:
{$AUTOBOX ON}
comSelectMannschaften.Parameters.Add('@mannschaft_id', OdbcType.Int).Value := iMannschaft
......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#7

Re: ODBC.Net, OdbcParameter, Zuweisung von Parametern für SQ

  Alt 27. Okt 2004, 18:58
Bei beiden Methoden kommt zur Laufzeit:
Zitat:
System.Data.Odbc.OdbcException: ERROR [07002] [MySQL][ODBC 3.51 Driver][mysqld-4.0.14-nt]SQLBindParameter not used for all parameters
at System.Data.Odbc.OdbcConnection.HandleError(Handle Ref hrHandle, SQL_HANDLE hType, RETCODE retcode)
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(C ommandBehavior behavior, String method)
at System.Data.Odbc.OdbcCommand.ExecuteReader(Command Behavior behavior)
at System.Data.Odbc.OdbcCommand.System.Data.IDbComman d.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillFromCommand(O bject data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
at ttVoranOheService.TttVoranOhe.getAnsetzungenBySais onMannschaft(String sSessionID, String sSaison, Int32 iMannschaft) in c:\inetpub\wwwroot\tt_voranohe_service\ttVoranOheS ervice.pas:line 587
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#8

Re: ODBC.Net, OdbcParameter, Zuweisung von Parametern für SQ

  Alt 27. Okt 2004, 19:14
Ich glaube, ich mache Schluß für heute. Es funktioniert doch. Aber wenn man die falschen Bezeichner verwendet.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz