PDA

View Full Version : سوال: تعداد ركوردهاي select شده



Marzieh_A
دوشنبه 23 آذر 1388, 08:02 صبح
سلام به دوستان عزيز
سوالي كه براي من پيش اومده اينه كه چه جوري ميشه بعد از select كردن تعداد ركرودهايي كه select شده رو بدست آورد؟
سوال بعديم اينه كه من دستور select رو در برنامم به صورت زير نوشتم اما هنگام اجراي برنامه error مي ده اگر ممكنه اشكالش رو بگيد.




SqlConnection objConnection = new SqlConnection("Server=localhost;Database=IT;User ID=sa;Password=;");
SqlCommand objCommand = new SqlCommand();
objCommand.Connection = objConnection;
string t1 = textBox1.Text;
string t2 = textBox2.Text;
objCommand.CommandText = "SELECT * FROM Name WHERE Name ='" + t1 + "' & Family ='" + t2 + "'";
objConnection.Open();
objCommand.ExecuteNonQuery();
objConnection.Close();
a

AliRezaPro
دوشنبه 23 آذر 1388, 08:39 صبح
میتوانید آن را Read کنید و با اندیس به آن دسترسی داشته باشید.
ارورتون چیه؟

Marzieh_A
دوشنبه 23 آذر 1388, 09:30 صبح
ميشه در مورد read كردن و با انديس دسترسي پيدا كردن بيشتر توضيح بديد؟ :لبخندساده:
error ش اينه:
incorrect syntax near "=" t
ولي هر كاري كردم اين syntax درست نشد (با فاصله و بدون فاصله قبل و بعد =)

AliRezaPro
دوشنبه 23 آذر 1388, 10:59 صبح
منظورت از & چی بود ؟همون AND?اگه این باشه که باید خود AND رو بنویسید نه این کاراکتر رو

مثلا :
SqlCommand sc =new SqlCommand ("select Date from date", connn);
connn .Open ();
SqlDataReader dr;
dr = sc.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
string strr = dr[0].ToString ();

Reza_Yarahmadi
دوشنبه 23 آذر 1388, 11:10 صبح
سوالي كه براي من پيش اومده اينه كه چه جوري ميشه بعد از select كردن تعداد ركرودهايي كه select شده رو بدست آورد؟
معمولا نتیجه یه جستجو توی یه DataTable ریخته میشه ، برای بدست آوردن تعداد رکوردها میشه از دستوری مثل دستور زیر استفاده کرد:

dataTable1.Rows.Count
اگر قصد دارید فقط تعداد رکورد رو حساب کنید میتونید از دستورات SQL هم استفاده کنید

Select Max(*) From TableName Where ....

سوال بعديم اينه كه من دستور select رو در برنامم به صورت زير نوشتم اما هنگام اجراي برنامه error مي ده اگر ممكنه اشكالش رو بگيد.
فکر میکنم شما از عملگر & به جای AND استفاده کردید. اگر اینطوره کافیه & رو با AND جایگزین کنید.

ميشه در مورد read كردن و با انديس دسترسي پيدا كردن بيشتر توضيح بديد؟
نمونه کد زیر بصورت شمارشی تعداد رکورد رو پیدا میکنه:

int Count = 0;
SqlCommand Cmd = new SqlCommand ("Select * from TableName", Conn);
Conn.Open();
SqlDataReader dr = Cmd.ExecuteReader();
while(dr.Read())
{
Count++;
//Do Some Things
}
Conn.Close();

ali.aghdam
پنج شنبه 01 بهمن 1388, 00:26 صبح
ببینید نیازی به کد نویسی زباد نیست فقط توجه کنید که ExecuteNonQuery یک مقدار خرو جی دارد و آن هم همان تعداد اجرای آن در بانک است و می توانید خروجی آن را بگیرید به همین راحتی:چشمک:




Messagebox.show(objCommand.ExecuteReader ());

Mostafa_Dindar
پنج شنبه 01 بهمن 1388, 00:31 صبح
ببینید نیازی به کد نویسی زباد نیست فقط توجه کنید که ExecuteNonQuery یک مقدار خرو جی دارد و آن هم همان تعداد اجرای آن در بانک است و می توانید خروجی آن را بگیرید به همین راحتی:چشمک:




Messagebox.show(objCommand.ExecuteNonQuery());



مطمئن هستم دوست خوبمون ali.aghdam فراموش کردن که برای Select از ExecuteReader استفاده میکنیم .

درصورتیکه از DataReader استفاده کنید . هنگامی که رکوردها رو میخونید در دستور شرطی while (dr.Read()) به یک متغیر عددی ++ کنید . مثلا:

using (SqlDataReader dr = SqlHelper.ExecuteReader(Cmn.ConnectionString, CommandType.StoredProcedure, "sp_Articles_SelectAllPaged", arParams))
{
int i = 0;
if (dr.HasRows)
{
tempList = new ArticlesCollection();
while (dr.Read())
{
i++;
tempList.Add(FillDataRecord(dr));
}
}
dr.Close();
}

موفق باشید .

ali.aghdam
پنج شنبه 01 بهمن 1388, 00:37 صبح
مطمئنا هستم دوست خوبمون ali.aghdam فراموش کردن که برای Select از ExecuteReader استفاده میکنیم .

موفق باشید .

درسته دوست عزیز خوب میدونی پیریوو الزایمر:خجالت:

ولی ExecuteReaderهم همین خروجی رو داره.

Mostafa_Dindar
پنج شنبه 01 بهمن 1388, 00:44 صبح
درسته دوست عزیز خوب میدونی پیریوو الزایمر:خجالت:

ولی ExecuteReaderهم همین خروجی رو داره.

متاسفانه اینطور نیست :چشمک:

ٍمتد ExecuteReader با توجه به نوع Command مقدار SqlDataReader یا DataReader هاي ديگر برميگرداند .همیچنین این نوع برگشتی هیچ پراپرتی برای تشخیص تعداد رکوردهای بازکشتی از آن ندارد . پس به طریقی که در پست قبلی گفتیم هنگامی که در حلقه while (dr.Read()) یکی به اون اضافه کنیم و در نهایت خارج از حلقه متغیر ما مقدار تعداد رکوردها را خواهد داشت

موفق باشید

ali.aghdam
پنج شنبه 01 بهمن 1388, 01:04 صبح
حق با شماست .آلزایمر و آرتروز بهم نای باز کردن ویژوال استودیو رو نمی داد ولی کمر همت بستم و کد رو اصلاح کردم
دوستان منو ببخشید."تازه واردم دیگه".دیگه تکرار نمی شه

کد آقای /خانوم Marzieh_A (http://barnamenevis.org/forum/member.php?u=37174) رو ویرایش کردم ازش جوابم گرفتم .سوالی بود در خدمتم


Database db = new Database();
SqlConnection objConnection = new SqlConnection(db.ConnectionString );
SqlCommand objCommand = new SqlCommand();
objCommand.Connection = objConnection;
objCommand.CommandText = "SELECT count(*) FROM sick WHERE fname ='ا'";
objConnection.Open();
MessageBox.Show(objCommand.ExecuteScalar().ToStrin g ());
objConnection.Close();

misoft.ir
پنج شنبه 01 بهمن 1388, 06:34 صبح
سلام
برای جواب سوال اولتون به شما توصیه میکنم که لینک زیر را ببینید
http://www.developercenter.ir/forum/showthread.php?t=7037
به طور خلاصه تعداد رکودهایی رو که برمیگردونه رو میتونید با کد زیر دریافت کنید

int i = cmd.ExecuteNonQuery();

Mostafa_Dindar
پنج شنبه 01 بهمن 1388, 14:02 عصر
سلام
برای جواب سوال اولتون به شما توصیه میکنم که لینک زیر را ببینید
http://www.developercenter.ir/forum/showthread.php?t=7037
به طور خلاصه تعداد رکودهایی رو که برمیگردونه رو میتونید با کد زیر دریافت کنید

int i = cmd.ExecuteNonQuery();


سلام .

شما هم اشتباه دوست ديگمون رو تكرار كرديد . لطفا دوباره پستها را بخوانيد .:چشمک:

موفق باشيد .