PDA

View Full Version : select در سی شارپ



alireza.b
یک شنبه 05 خرداد 1392, 18:52 عصر
سلام
دیتابیس برنامه من sqlite است.
من می خواهم تمام یک ستون را بگیرم. اما نمی دانم چه جوری؟
این کد رو ببینید:

SQLiteCommand select2 = new SQLiteCommand("select مبلغ,ردیف from hesab", con);
con.Open();
SQLiteDataReader ddr=select2.ExecuteReader();
if (ddr.Read())
{
string[] a = new string[1000];
int i = 0;
while (i != 1000)
{
a[i] = ddr["مبلغ"].ToString();
i++;
MessageBox.Show(a[i]);
}
}
con.Close();
در ستون مبلغ چند عدد نوشته شده است اما در مسیج باکس هیچ چیز نشان داده نمی شود؟
لطفا کمک کنید

alireza.b
یک شنبه 05 خرداد 1392, 19:00 عصر
میشه کمک کنید؟

khokhan
یک شنبه 05 خرداد 1392, 20:22 عصر
میشه کمک کنید؟
می تونی جدول رو به یه گرید وصل کنی بعد ستونی رو که انتخاب کردی در مسیج باکس نشون بدی


private void button_Click(object sender, EventArgs e)
{
StringBuilder message = new StringBuilder();
foreach (DataGridViewCell cell in this.dataGridView.SelectedCells)
{
message.AppendLine("Value = " + cell.Value);
}

MessageBox.Show(message.ToString());
}

httplistener
یک شنبه 05 خرداد 1392, 20:44 عصر
سلام.
اول آنکه شما یک حلقه نوشتید و گفتید زحلقه تا زمانی ادامه پیدا کند که 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);

موفق باشید.

alireza.b
دوشنبه 06 خرداد 1392, 04:56 صبح
ممنون از شما. البته من کد رو یکم تغییر دادم و توی آرایه ریختم

while (ddr.Read())
{
a[i] = ddr["مبلغ"].ToString() + "\r\n";
MessageBox.Show(a[i] + "\r\n" + i.ToString() + " items has been found");
i++;
}
یه سوال دیگه:
فرق "n\" با "r\"چیه؟

httplistener
دوشنبه 06 خرداد 1392, 05:43 صبح
یه سوال دیگه:
فرق "n\" با "r\"چیه؟
سلام و صبحتون بخیر :چشمک:
ببینید r\ به معنای <CR> یا carriage return هست.کاری که این کاراکتر مخفی انجام میده رفتن به ابتدای خط هست.
n\ هم که به اون new line یا line feed هم گفته میشه،کارش همون کاریه که کلید enter انجام میده.
مفهوم r\ در سیستم های ویدوز و یونیکس یکی هست.اما در رابطه با رفتن به خط بعدی (<LF>) در سیستم یونیکس n\
این کار رو انجام میده اما در ویدوز بسیاری اوقات باید از r\n \برای این کاراستفاده کنید.
به خاطر این تفاوت در سیستم هاست که توصیه میشه برای برنامه های Cross Platform از Enviroment.NewLine
بجای اینها استفاده بشه.جالب اینکه در سیستم mac همr \ کار NewLine رو انجام میده.
اما سوالی که ممکنه پیش بیاد اینه که واقعا تفاوت r\ وn\ در چی هست؟ توضیح این تفاوت چندان ساده نیست،اما من با یه مثال سعی می کنم شما رو روشن کنم؛
NotePad رو باز کنید و در خط اول چند عدد بنویسید،بعد به خط بعدی برید و اونجا هم چند عدد دیگه..
حالا به خط اول برگردید و آخر خط وایستید(=carriage رو به انتهای خط ببرید) (همچنین می تونید با کلید end هم این کارو انجام بدید)حالا کلید right رو فشار بدید.چه اتفاقی می افته؟
بله شما به ابتدای خط بعدی رفتید.دوباره به انتهای خط اول برگردید و این بار بجای کلید right کلید enter رو فشار بدید.تفاوت رو متوجه شدید؟

fullsite1900
شنبه 15 تیر 1392, 20:02 عصر
سلام به همه دوستان
1مشکلی داشتم
میخو.استم بدونم چجوری میشه توی س شارپ،بعد از انجام مراحل ساخت دیتابیس و ... ،وقتی میخوام از اون استفاده کنم، مثلا فقط به ستون دوم و به عبارتی یک سلول مشخص دسترسی داشته باشم
ممنون میشم اگه کمکم کنید.خیلی نیاز دارم