Laden...

SQL-Syntax-Check im DbDataAdapter.Fill(...)

Erstellt von ThomasF vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.352 Views
T
ThomasF Themenstarter:in
89 Beiträge seit 2007
vor 14 Jahren
SQL-Syntax-Check im DbDataAdapter.Fill(...)

Hallo

ich brauche einen Syntax-Check bei einem Datenbankzugriff. Gibt es so was?

Dieser Code liefert keine Exception oder sonst ein Merkmal, wenn das SQL.Statement in
"command.CommandText" falsch ist:
[CSHARP]
IDbCommand command = conn.CreateCommand();
command.Transaction = transaction;
command.CommandText = queryStr;

IDbDataAdapter dataAdapter =
(IDbDataAdapter)m_DataAdapterConstructorInfo.Invoke(null);

dataAdapter.SelectCommand = command;

DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);
[/CSHARP]

Ich benutze eine Informix Datenbank.

A
266 Beiträge seit 2007
vor 14 Jahren

Du willst prüfen ob dein Statement erfolgreich war?

Denn frag doch die Länge vom DataSet nach dem SQL-Aufruf ab...


   if (dataSet.Tables[0].Rows.Count != 0)
   {
      // Tu was dir schweppt!
      // "DI DI DI DIP"!
   }

Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...

T
ThomasF Themenstarter:in
89 Beiträge seit 2007
vor 14 Jahren

Danke für den Ansatz,

habe ein wenig herumprobiert:
Wenn die Syntax falsch ist muss man das abfragen. Dien Ansatz zählt wirklich nur die Zeilen, und die können ja ganz regulär auch 0 sein.


if (dataSet.Tables.Count == 0)
{
// Syntax ist falsch, Spalte nicht vorhanden etc.
}

J
3.331 Beiträge seit 2006
vor 14 Jahren

Hallo,

das sind doch Situationen, für die **Exception **vorgesehen ist. Mit ex.ToString() bekommt man allgemein die meisten Informationen (mehr als bei ex.Message); außerdem kann man die verschiedenen Exception-Typen unterscheiden: System.Data.Common.DbException, System.Runtime.InteropServices.ExternalException oder am besten mit dem passenden DbProvider IBM.Data.Informix. Damit kannst du zwischen einem Fehler und einer korrekten Rückgabe ohne Zeilen unterscheiden.

Jürgen