PDA

View Full Version : فراخوانی نشدن اطلاعات از دیتابیس Sqlite



mr_ayma
پنج شنبه 27 خرداد 1395, 16:32 عصر
سلام ، دوستان من با این کد به دیتابیس رکوردی رو اضافه می کنم ، هیچ مشکلی پیش نمیاد حتی موقعی که با Sqllite Manager دیتابیس رو باز می کنم می بینم که اطلاعات اضافه شده ، ولی عجیب اینکه
کد فراخوانی درست عمل نمی کنه ، اجازه بدین ساده تر بگم

این کد افزودن ( در رویداد کلیک باتن 1 ، یه رکورد به دیتابیس اضافه می کنه )

string q2 = "INSERT INTO nametb(ID,name,emtiaz,groh) VALUES(?,?,?,?)";
SQLiteCommand cmd2 = new SQLiteCommand(q2, con);
cmd2.Parameters.AddWithValue("@ID", 98);
cmd2.Parameters.AddWithValue("@name", "Salam");
cmd2.Parameters.AddWithValue("@emtiaz", int.Parse(textBox2.Text));
cmd2.Parameters.AddWithValue("@groh", 1);
con.Open();
cmd2.ExecuteNonQuery();
con.Close();


و این پایینی کدی هست که بزرگترین ایدی رو برمی گردونه ، در رویداد کلیک باتن دوم نوشته شده ، با توجه به کد بالا باید مقدار 78 رو برمی گردوند ولی به جاش صفر رو برمی گردونه

string selectMaxId = "Select Max(ID) From nametb";
int maxId = 0;

SQLiteCommand selectMaxCmd = new SQLiteCommand(selectMaxId, con);
con.Open();

object val = selectMaxCmd.ExecuteScalar();
if (val is int)
maxId = int.Parse(val.ToString());
else
maxId = 0;
con.Close();
MessageBox.Show(maxId.ToString()); // این خط همیشه صفر رو نشون می ده
// با وجودی که کدهای وقتی می رم دیتابیس رو چک می کنم می بینم رکورد اضافه شده

mr_ayma
پنج شنبه 27 خرداد 1395, 16:33 عصر
ادیت : به این صورت تغییر دادم حل شدم !


string selectMaxId = " SELECT (CASE WHEN MAX(ID) IS NULL THEN 0 ELSE MAX(id) END) AS [Result] FROM nametb";
SQLiteCommand selectMaxCmd = new SQLiteCommand(selectMaxId, con);
con.Open();
object val = selectMaxCmd.ExecuteScalar();
MessageBox.Show(val.ToString());