Mam problem ze sprawdzeniem czy dane ID istnieje w bazie. W funkcji checkID tworzona jest nowa instancja obiektu itemdata, jeśli ID, które jest parametrem funkcji checkID istniej w bazie, nowo utworzony obiekt itemdata jest wypełniany danymi z bazy, jeśli nie wypełniane jest tylko ID obiektu. Taki obiekt jest zwracany.
W bazie co prawda jest pętla while(reader.Read()) ale wiersz powinien być zawsze jeden. Przy każdym zapisie sprawdzam obecność ID w bazie, jeśli nie ma to wykonuję INSERT, jeśli jest to wykonuję UPDATE, dzięki czemu while(reader.Read()) wykona się tylko raz.
public itemdata checkID(string ID)
{
MainData itemdata = new MainData();
using(FbConnection conn = new FbConnection(connText))
{
conn.Open();
using(FbCommand cmd = conn.CreateCommand())
{
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "select * from MAINDATA where ID_ITEMS= '"+ID+"'";
using(FbDataReader reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
while(reader.Read())
{
//pobranie i wypełnienie zmiennych
itemdata.SetData(pobrane zmienne);
}
}
else
{
itemdata.SetID(ID);
}
}
}
}
return itemdata;
}
Problem w tym że bez znaczenia czy ID istnieje w bazie czy nie, reader.HasRows zawsze zwraca true.
Może ktoś określić co robię źle ?