PDA

View Full Version : چگونه اطلاعات SqlDataReader را به یک متغییر



mehdirayaneh
یک شنبه 15 بهمن 1385, 23:25 عصر
چگونه اطلاعات SqlDataReader را به یک متغییر از نوع اعددی رشته و غیره انتقال داد

Alireza_Salehi
یک شنبه 15 بهمن 1385, 23:45 عصر
با متد هایی از SqlDataReader که با Get شروع می شوند میتونی تمام انواع متغییر ها رو مقداردهی کنی ، فقط شماره اندیس فیلد رو به این متد ها میدی!


Int32 x=ُSqldataReader.GetInt32(1);//اگر فیلد دوم (اندیس یک) کوئری از نوع صحیح است
String s=ُSqldataReader.GetString(2);//اگر فیلد سوم (اندیس دو) کوئری از نوع رشته است
اگر هم خواستی خودت تبدیل نوع رو انجام بدی SqlDataReader مثل یک ارایه هست که با اندیس یا نام فیلد میشه مقدار آن فیلد رو بدست آورد.


Int32 x=(Int32) SqlDataReader[2];//اگر فیلد سوم (اندیس دو) از نوع صحیح است
Int32 x=(Int32) SqlDataReader["ID"];//اگر فیلد ID کوئری از نوع صحیح است
این روش آرایه ای ابجکت بر میگردونه و باید تبدیل بشه!

mehdirayaneh
دوشنبه 16 بهمن 1385, 21:36 عصر
این کار انجام می دهم ارور ERRR میده

mehdirayaneh
دوشنبه 16 بهمن 1385, 21:59 عصر
SqlConnection Connection1= new SqlConnection();
Connection1.ConnectionString = ConfigurationManager.ConnectionStrings["DBARHAMConnectionString"].ConnectionString;
SqlCommand Command1 = new SqlCommand();
Command1.CommandText = "select * from جدول اعضا where آدی سرگروه='" + var + "' ";
Command1.Connection = Connection1;
if (Connection1.State != ConnectionState.Open)
Connection1.Open();

SqlDataReader DataReader= cmdsar.ExecuteReader();

Int32 x=DataReader.GetInt32(1);

mehdirayaneh
دوشنبه 16 بهمن 1385, 22:00 عصر
این کد منSqlConnection Connection1= new SqlConnection();
Connection1.ConnectionString = ConfigurationManager.ConnectionStrings["DBARHAMConnectionString"].ConnectionString;
SqlCommand Command1 = new SqlCommand();
Command1.CommandText = "select * from جدول اعضا where آدی سرگروه='" + var + "' ";
Command1.Connection = Connection1;
if (Connection1.State != ConnectionState.Open)
Connection1.Open();

SqlDataReader DataReader= cmdsar.ExecuteReader();

Int32 x=DataReader.GetInt32(1);

mehdirayaneh
دوشنبه 16 بهمن 1385, 22:04 عصر
این کد من
SqlConnection Connection1= new SqlConnection();
Connection1.ConnectionString = ConfigurationManager.ConnectionStrings["DBARHAMConnectionString"].ConnectionString;
SqlCommand Command1 = new SqlCommand();
Command1.CommandText = "select * from جدول اعضا where آدی سرگروه='" + var + "' ";
Command1.Connection = Connection1;
if (Connection1.State != ConnectionState.Open)
Connection1.Open();

SqlDataReader DataReader= cmdsar.ExecuteReader();

Int32 x=DataReader.GetInt32(1);

mehdirayaneh
دوشنبه 16 بهمن 1385, 22:26 عصر
این کد من
SqlConnection Connection1= new SqlConnection();
Connection1.ConnectionString = ConfigurationManager.ConnectionStrings["DBARHAMConnectionString"].ConnectionString;
SqlCommand Command1 = new SqlCommand();
Command1.CommandText = "select * from جدول اعضا where آدی سرگروه='" + var + "' ";
Command1.Connection = Connection1;
if (Connection1.State != ConnectionState.Open)
Connection1.Open();

SqlDataReader DataReader= cmdsar.ExecuteReader();

Int32 x=DataReader.GetInt32(1);

Alireza_Salehi
سه شنبه 17 بهمن 1385, 06:33 صبح
اولا لطفا وقتی کد میذاری از تگ کد استفاده کن بشه راحت خوندش (حالت پیشرفته)

خطا رو ننوشتی چیه ! ولی من حدس میزنم دیتا ریدر اصلا مقداری بر نمیگردونه ، بنابراین موقع بازیابی داده ها خطا میده!

به موضوعات زیر دقت کن:
1.این var نوعش چیه؟
2.اسم فیلد ها و جدول رو بین [] قرار بده
3.آیا نوع داده فیلد مورد نظر با متد استفاده شده مطابقت دارد؟
4.پیشنهاد می کنم از نام فارسی در تعریف جدول ها وفیلد ها استفاده نکنی!

این تاپیک رو هم ببین : http://www.barnamenevis.org/forum/showthread.php?t=60694


این ها رو با توجه به این که نگفتی ارور چیه نوشتم !

mehdirayaneh
سه شنبه 17 بهمن 1385, 09:30 صبح
1-این از نوع int داخل SQL هست
2- [] منظورت از این که داخل دستور SQL
3- بله
4- من برای شما فارسی کردم

mehdirayaneh
سه شنبه 17 بهمن 1385, 09:33 صبح
این کد اصلی با []
SqlConnection conm = new SqlConnection();
conm.ConnectionString = ConfigurationManager.ConnectionStrings["DBARHAMConnectionString"].ConnectionString;
SqlCommand cmdsar = new SqlCommand();
cmdsar.CommandText = "select * from [aza] where [ID_SAP]='" + IDSar + "' ";
cmdsar.Connection = conm;
if (conm.State != ConnectionState.Open)
conm.Open();

SqlDataReader drsar = cmdsar.ExecuteReader();

Int32 x=drsar.GetInt32(1);

mehdirayaneh
سه شنبه 17 بهمن 1385, 10:19 صبح
من یک برنامه تحت وب نوشته ام سوالی کردام که چگونه با SqlDataReader کار کرد . این سوال را برای این کار که توضیح میدهم بود که هنوز هم نتوانستم حل کنم می خواهم که (باتوجه به کد داده شده) یک مبلغ را به اعضا خود بصورت سرگروه وارد کنم یعنی وقتی سر گروه را انتخاب کردام مبلغ را به زیر مجموعه این سرگروه اضافه کنه بصورت مساوی به زیر مجموعه اضافه شود

Alireza_Salehi
سه شنبه 17 بهمن 1385, 14:18 عصر
این کد که مشکلی نداره (فقط این IDSar اگر از نوع رشته نیست باید یه ()ToString. بهش اضافه کنی) !
البته قبل از این که چیزی از دیتاریدر بخونی باید متد خواندن رو اجرا کنی!
کد:

اگر خطا میده پیام خطا رو بذار ببینیم چیه ؟

...
SqlDataReader drsar = cmdsar.ExecuteReader();
drsar.Read();
Int32 x = drsar.GetInt32(0);
... غیر از این ، یه کم واضح تر توضیح بده ؟
می خوای به دیتابیست چیزی اضافه کنی یا ... ؟؟؟؟

mehdirayaneh
سه شنبه 17 بهمن 1385, 19:38 عصر
3 ID_OZV(key) int 4 0
0 ID_SAP int 4 1
0 NAME nvarchar 50 1
0 FAMLIY nvarchar 50 1
0 DATE_OZV varchar 50 1
0 MOJ_KOL int 4 1
0 hazf_ozo int 4 1
این جدول اعضا
و سوال من اگر ID_SAP=1(بصورت مثال1) زیر مجموع یعنی ID_ozv ها که ID_SAP=1 هست را
مبلغ 2000 (بصورت مثال) را به این عضوهای داخل شرط اضافه کنه

ID_SAP کد سرپرست
ID_OZV کد اعضا
MOJ_KOL موجودی + 2000 با شرط که گذاشتم
"select * from [t] where [ID_SAP]=1
یعنی شرط

و بگم که هنوز ERRR می ده

mehdirayaneh
سه شنبه 17 بهمن 1385, 22:00 عصر
با تشکر
بابت

SqlDataReader drsar = cmdsar.ExecuteReader();
drsar.Read();
Int32 x = drsar.GetInt32(0);
و سوال که چگونه داخل for رکورد ها را دسترسی داشت


SqlConnection conm = new SqlConnection();
conm.ConnectionString = ConfigurationManager.ConnectionStrings["DBARHAMConnectionString"].ConnectionString;
SqlCommand cmdsar = new SqlCommand();
cmdsar.CommandText = "select * from aza where ID_SAP='" + IDSar + "' ";
cmdsar.Connection = conm;
if (conm.State != ConnectionState.Open)
conm.Open();
SqlDataReader drsar = cmdsar.ExecuteReader();

for (int i = 0; i < 2; i++)
{
drsar.Read();

Int32 x = drsar.GetInt32(0);
Label2.Text = Convert.ToString(x);


}

این حالت وقت یک رکورد قابل دسترسی و فقط اولین رکورد نمایش داده می شود

mehdirayaneh
سه شنبه 17 بهمن 1385, 22:01 عصر
این حالت وفقط یک رکورد قابل دسترسی و فقط اولین رکورد نمایش داده می شود

Alireza_Salehi
چهارشنبه 18 بهمن 1385, 06:33 صبح
while (drsar.Read())
{...}


عزیزم اگر Error میده ، Error رو اینجا بذار ببینم چیه ؟

برای تغییر دادن چیزی هم باید از دستور UPDATE استفاده کنی! (یه کم تو تالار جستجو کن)

mehdirayaneh
چهارشنبه 18 بهمن 1385, 18:29 عصر
از کمکی که کردی متشکرام به هدفی که خواستم رسیدم