PDA

View Full Version : انتقال مقادیر ثبت شده در پایگاه داده به textbox



aaraaz
شنبه 09 خرداد 1388, 11:56 صبح
سلام
چطور میشه مقادیر موجود در پایگاه داده رو به چند text box منتقل کرد؟

bahar_engineer
شنبه 09 خرداد 1388, 12:35 عصر
فیلدهایی رو که می خوای توی تکست باکس نمایش بدی رو با دستور select انتخاب کن و بعد از باز کردن کانکشنت می نویسی :



textbox1.text = cmd.executenonequery();


مثل این کد:



string k;
k = " select code from table1 where name='"+label1.text+"'";
OleDbCommand cmd1 = new OleDbCommand(k, con1);
con1.Open();
textBox1.Text = (cmd1.ExecuteNonQuery()).ToString();
con1.Close();

NewFoxStudent
شنبه 09 خرداد 1388, 12:52 عصر
فیلدهایی رو که می خوای توی تکست باکس نمایش بدی رو با دستور select انتخاب کن و بعد از باز کردن کانکشنت می نویسی :



textbox1.text = cmd.executenonequery();
مثل این کد:



string k;
k = " select code from table1 where name='"+label1.text+"'";
OleDbCommand cmd1 = new OleDbCommand(k, con1);
con1.Open();
textBox1.Text = (cmd1.ExecuteNonQuery()).ToString();
con1.Close();


این کد یه مقدار از نوع int برمیگردونه که تعداد ردیفهای انتخاب شده رو نشون میده
برای دریافت مقدار یک ردیف از یک جدول باید از تابع ExecuteScaler استفاده کنید


object obj = cmd1.ExecuteScaler();
textBox1.Text = (obj != null) ? obj.ToString:string.Empty;

aaraaz
شنبه 09 خرداد 1388, 13:03 عصر
یعنی واسه هر فیلد باید یه select بزنم؟

NewFoxStudent
شنبه 09 خرداد 1388, 13:35 عصر
میتونید تمام فیلدها رو توی یه Select بیارید و از کلاس SqlDataReader برای خوندن مقادیر دریافتی استفاده کنید


JobTitleID = 0;
Code = Name = "";
string sqlCmd = string.Concat("Select * From JobTitle Where JobTitleID = ", id);
SqlConnection sqlConnection = new SqlConnection(Properties.Settings.Default.SqlConne ctionString);
SqlCommand sqlCommand = new SqlCommand(sqlCmd, sqlConnection);
sqlConnection.Open();
SqlDataReader sqlReader = sqlCommand.ExecuteReader(CommandBehavior.SingleRow );
if (sqlReader.Read())
{
JobTitleID = (int)sqlReader["JobTitleID"];
Code = sqlReader["Code"].ToString();
Name = sqlReader["Name"].ToString();
}
sqlReader.Close();
sqlConnection.Close();

sysman_20
شنبه 09 خرداد 1388, 14:39 عصر
نیازی به چند بار select نیست.
به جای name & family نام فیلدی که میخوای تو اون textbox بریزی رو بذار.


OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand.CommandText = "select * from Table1";
ds.Clear();
da.Fill(ds, "t1");
textBox1.DataBindings.Add("text", ds, "t1.Name");
textBox2.DataBindings.Add("text", ds, "t1.Family");

bahar_engineer
شنبه 09 خرداد 1388, 17:27 عصر
این کد یه مقدار از نوع int برمیگردونه که تعداد ردیفهای انتخاب شده رو نشون میده
برای دریافت مقدار یک ردیف از یک جدول باید از تابع ExecuteScaler استفاده کنید


object obj = cmd1.ExecuteScaler();
textBox1.Text = (obj != null) ? obj.ToString:string.Empty;


ولی من برای نمایش تعداد از executescaler استفاده کردم توی یه سیستم نظر سنجی و مشکلی هم ندارم... و برعکس برای نمایش محتوای فیلد از executenonequery استفاده می کنم؟!!!!!

نمونه کد سیستم نظرسنجی : چاپ تعداد نظرات


// display number of result
string d;
d = "provider=microsoft.jet.oledb.4.0;data source=" + Server.MapPath("users.mdb");
OleDbConnection cond = new OleDbConnection(d);
string kd;
kd = "select count(*) from nresult where title='" + Label1.Text + "'";
OleDbCommand cmda = new OleDbCommand(kd, cond);
cond.Open();
Label2.Text = (cmda.ExecuteScalar()).ToString();
cond.Close();

aaraaz
شنبه 09 خرداد 1388, 18:50 عصر
اگه بخوام همه رو توی دیتا تیبل بریزم و یک به یک فیلد ها رو از از datatable بخونم باید چی کار کنم

NewFoxStudent
یک شنبه 10 خرداد 1388, 10:23 صبح
ولی من برای نمایش تعداد از executescaler استفاده کردم توی یه سیستم نظر سنجی و مشکلی هم ندارم... و برعکس برای نمایش محتوای فیلد از executenonequery استفاده می کنم؟!!!!!

نمونه کد سیستم نظرسنجی : چاپ تعداد نظرات


// display number of result
string d;
d = "provider=microsoft.jet.oledb.4.0;data source=" + Server.MapPath("users.mdb");
OleDbConnection cond = new OleDbConnection(d);
string kd;
kd = "select count(*) from nresult where title='" + Label1.Text + "'";
OleDbCommand cmda = new OleDbCommand(kd, cond);
cond.Open();
Label2.Text = (cmda.ExecuteScalar()).ToString();
cond.Close();


دوست عزیز شما توی کد بالا از تابع Count برای بدست آوردن تعداد استفاده کردید و با استفاده از روال ExecuteScaler مقدار دریافت شده توسط کوئری رو به یک Object توی C# منتقل کردید و این همون چیزی که من عرض کردم
و اما تابع ExecuteNoneQuery
از این تابع برای اجرای کوئری هایی که مقادیری رو برنمیگردونن استفاده میشه مثل Insert,update,Delete و ....
مقدار بازگشتی این تابع از نوع int و مقداری که برمیگردونه برابر با تعداد ردیفیه که توسط کوئری شما تحت تاثیر قرار گرفته
حالا اگه شما یه کوئری رو که یک یا چند ردیف رو برمیگردونه با این تابع اجرا کنید تنها چیزی که براتون برمیگردونه تعداد ردیفهاست
برای اطمینان میتونید توضیحات تابع رو هم بخونید