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.
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...
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.
}
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