PDA

View Full Version : مبتدی: خواندن مقدار یک فیلد از رکورد دیتابیس sqlserver بوسیله ado.net بدون استفاده از databinding



مهرداد3296
یک شنبه 18 تیر 1396, 12:31 عصر
سلام
یه سوال مبتدیانه داشتم از اساتید محترم
چجوری میتونم بوسیله ado.net مقدار یک فیلد از دیتابیس sqlserver رو بخونم بدون اینکه اون رو به خاصیت text یک textbox بایند کنم. یعنی به جای استفاده از این دستور :
Textbox1.DataBindings.Add("Text", objDataView, "Salary")

در واقع میخوام بتونم اطلاعات یک فیلد رو بخونم و مستقیم در یک متغیر مثلا از نوع int ذخیره کنم

Mahmoud Zaad
یک شنبه 18 تیر 1396, 20:23 عصر
سلام
دو تا راه داره 1-استفاده از dataReader و 2- استفاده از dataTable
1-
SqlConnection cn=new SqlConnection("connectionString");
SqlCommand cmd=new SqlCommand("select * from tbl where id=@id", cn);
cmd.Parameters.AddWithValue("@id", 1);
cn.Open();
SqlDataReader dr = cmd.ExecuteReader();


if (dr.HasRows)
{
while (dr.Read())
{
TextBox1.Text=dr["Salary"].ToString();
}
}
dr.Close();
cn.Close();


2-
SqlDataAdapter da=new SqlDataAdapter("select * from tbl where id=@id", cn);
da.SelectCommand.Parameters.AddWithValue("@id", 1);
DataTable dt=new DataTable();
da.Fill(dt);
TextBox1.Text=dt.Rows[0]["Salary"].ToString();


البته اگر فقط یک فیلد رو بخواید بدست بیارید یه راه سومی هم هست:
SqlConnection cn=new SqlConnection("connectionString");
SqlCommand cmd=new SqlCommand("select salary from tbl where id=@id", cn);
cmd.Parameters.AddWithValue("@id", 1);
if (cn.State != ConnectionState.Open)
cn.Open();
object _result = cmd.ExecuteScalar();
if (cn.State != ConnectionState.Closed)
cn.Close();

int _val=Convert.ToInt32(_result);



ممکنه غلط املایی یا سایر خطاها وجود داشته باشه چون حفظی نوشتم. اگه مشکلی بود بپرس.

مهرداد3296
دوشنبه 19 تیر 1396, 00:08 صبح
سلام
دو تا راه داره 1-استفاده از dataReader و 2- استفاده از dataTable
1-
SqlConnection cn=new SqlConnection("connectionString");
SqlCommand cmd=new SqlCommand("select * from tbl where id=@id", cn);
cmd.Parameters.AddWithValue("@id", 1);
cn.Open();
SqlDataReader dr = cmd.ExecuteReader();


if (dr.HasRows)
{
while (dr.Read())
{
TextBox1.Text=dr["Salary"].ToString();
}
}
dr.Close();
cn.Close();


2-
SqlDataAdapter da=new SqlDataAdapter("select * from tbl where id=@id", cn);
da.SelectCommand.Parameters.AddWithValue("@id", 1);
DataTable dt=new DataTable();
da.Fill(dt);
TextBox1.Text=dt.Rows[0]["Salary"].ToString();


البته اگر فقط یک فیلد رو بخواید بدست بیارید یه راه سومی هم هست:
SqlConnection cn=new SqlConnection("connectionString");
SqlCommand cmd=new SqlCommand("select salary from tbl where id=@id", cn);
cmd.Parameters.AddWithValue("@id", 1);
if (cn.State != ConnectionState.Open)
cn.Open();
object _result = cmd.ExecuteScalar();
if (cn.State != ConnectionState.Closed)
cn.Close();

int _val=Convert.ToInt32(_result);



ممکنه غلط املایی یا سایر خطاها وجود داشته باشه چون حفظی نوشتم. اگه مشکلی بود بپرس.




مرسی ممنون . فکر کنم راه دومی بیشتر به دردم بخوره.