Select liefert plötzlich keine Daten

painky

Grünschnabel
Hi,

ich habe ein schweres Problem auf das ich keine Lösung finde und ich hoffe das mir jemand weiter helfen kann! Ich speichere per Insert Daten über den SQLCommand von .Net in eine MS SQL Express Datenbank ab. Um an den PrimaryKey zu kommen mache ich gleich danach ein Select. Jedoch gibt das Select einen Leeren Reader zurück. Das komische an der Sache ist, nach einem Connect oder Reconnect funktioniert das ganze eine kurze Zeit und dann bekomme ich keine Daten mehr zurück. Ich bekomme auch keine Exception. Ich habe gestern gesucht und gesucht und nichts gefunden. Im Internet finde ich leider auch keine Hinweise.

Hier der funktionsaufruf:

_DBQuery("insert into process_steps (process_step,starttime_of_process_step,id_main_process_data,brick_side) values (" + forStep.ToString() + ",GETDATE()," + _CurrentMainProcessDataID.ToString() + "," + Brick_Side + ");", false);
Table = _DBQuery("select max(id) as id from process_steps;", true);
Reader = Table.CreateDataReader();
if (Reader.Read())
{
_CurrentProcessStepID = Convert.ToInt32(Reader["id"]);
}

und hier die Funktion

protected DataTable _DBQuery(String stmt, Boolean GetResult)
{
DBQueryMutex.WaitOne();

DataTable Result = new DataTable();

if (!GetResult)
_DBAgent.Insert(stmt);
else
Result = _DBAgent.Select(stmt);

DBQueryMutex.ReleaseMutex();

return Result;
}

Ich danke euch im Voraus!


MfG

Lars
 
Du kannst dir die neue ID einfach mit der gleichen Abfrage holen mit der du den Insert machst:

@@IDENTITY könnten dir hier weiter helfen. Beide geben den letzten Identitätswert zurück der in der aktuellen Sitzung erzeugt wurde.

Einfach ein "SELECT @@IDENTITY as MyNewId" an den Insert dranhängen und du solltest den neue Key bekommen...
 
Oh ja danke, ich weis auch nicht warum ich das immer anderes mache. Ist irgendwie so eine angewohnheit.
Aber daran lag es nicht. Ich habe den Fehler gefunden. Jedenfalls läuft es erschreckend lange ohne Probleme. Es war ein Threadüberschneidung im Spiel. Ich hatte zwar ein Mutex darum gemacht aber habe die Select Methode noch manchmal direkt aufgerufen. Ups

Danke

Gruss Lars
 

Neue Beiträge

Zurück