سلام.
اول آنکه شما یک حلقه نوشتید و گفتید زحلقه تا زمانی ادامه پیدا کند که i به 1000 برسد.اما برچه اساس؟؟
ضمنا دقت کنید که کار متد ddr.Read که استفاده کردید این نیست که نشان دهد آیا سطری وجود دارد یانه.هر چند درصورتی که بخواید فقط یک سطر رو بازیابی کنید میشه برای این کار ازش استفاده کرد.بلکه کار این خاصیت هست: ddr.HasRow - کاری که ddr.Read انجام میده اینه که سعی میکنه سطر بعدی ریسورس رو بخونه و در صورت موفقیت مقدار True برمیگردونه .بعد برای این موراد سعی کنید بجای آرایه از list ها استفاده کنید.هر چند که هدفی که شما از کدتون داشتید بدون استفاده از این هم حاصل میشد.
کد اصلاح شده شما:
SQLiteCommand select2 = new SQLiteCommand("select مبلغ,ردیف from hesab", con);
con.Open();
SQLiteDataReader ddr=select2.ExecuteReader();
if (ddr.HasRows)
{
int i = 0;
string res="";
while (dbReader.Read())
{
res+= ddr["مبلغ"].ToString()+"\r\n";
i++;
}
MessageBox.Show(res+"\r\n"+i.ToString()+" items has been found");
}
else
MessageBox.Show("رکوردی برای نمایش وجود ندارد");
con.Close();
نکته آخر اینکه سعی کنید نام فیلدهاتون رو انگلیسی بگیرید و موقع نمایش فارسی نمایش بدید.
SQLiteCommand select2 = new SQLiteCommand("select rowId as `شماره ردیف` , price as `قیمت` from hesab", con);
موفق باشید.