PDA

View Full Version : فراخوانی یک فیلد از پایگاه در textbox



pure_love
دوشنبه 17 مهر 1396, 22:55 عصر
سلام دوستان.
146660

تو پروژه ام که در بالا عکسشو گذاشتم
میخوام زمانی که رو دکمه ای که با فلش مشخص کردم کلیک کردم
تو پایگاه داده ها نام کالای نوشته شده رو پیدا کنه و قیمت خریدش رو برامون تو تکس باکس نمایش بده

ممنونم

تبسم ساینا
سه شنبه 18 مهر 1396, 00:02 صبح
select price from product where name like '%' + txtname.text + '%'

این کوئری رو باید اجرا کنید.
با فرض بر اینکه Product اسم جدولتونه

pure_love
سه شنبه 18 مهر 1396, 14:18 عصر
select price from product where name like '%' + txtname.text + '%'

این کوئری رو باید اجرا کنید.
با فرض بر اینکه Product اسم جدولتونه

دوست عزیز این کد های منه :

SqlConnection M = new SqlConnection("Data Source=.;Initial Catalog=mobile;Integrated Security=True");

M.Open();
String s2 = string.Format("select fikharid from sabtkala where namekala like '%' + textBox2.text + '%'");


SqlCommand comm2 = new SqlCommand(s2, M);

SqlDataAdapter adap = new SqlDataAdapter(comm2);

DataTable dt = new DataTable();

adap.Fill(dt);
dataGridView1.DataSource = dt;



ولی کار نمیکنه پیغام میده ! کدی که دادین باید کجا بزارم ؟
چجوری بزارمش کار کنه ؟
ممنون میشم راهنمایی کنید
تشکر

danialafshari
چهارشنبه 19 مهر 1396, 01:01 صبح
با سلام
شما باید از query ای استفاده کنید که خروجیش تکی باشد مثلا اگر هویج رو نوشتید خروجی بدهد 2000 . نه چند رکورد برگردونه
در خط سوم بشکل نادرست از String.Format استفاده کردید
به این شکل استفاده کنید

String.Format(@"SELECT Price FROM dbo.Works WHERE (WorkName = N'{0}')",textBox1.Text)


دستور کلی:
من از این متد برای فراخوانی کوئری استفاده می کنم

public void select(string source)
{
try
{
if (con.State == ConnectionState.Open)
{
con.Close();
}
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = source.Trim();
con.Open();
cmd.ExecuteNonQuery();
adap.SelectCommand = cmd;
adap.SelectCommand.ExecuteNonQuery();
dt.Clear();
adap.Fill(dt);
con.Close();
}
catch (Exception ex)
{
con.Close();
MessageBox.Show(ex.Message, "خطای غیر منتظره", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
con.Close();
}
}

توسط کد زیر هم میتونید درون textbox مقدار رو از دیتابیس بخونید


private void button1_Click(object sender, EventArgs e)
{
select(String.Format(@"SELECT Price FROM dbo.Works WHERE (WorkName = N'{0}')",textBox1.Text)) ;
if (dt.Rows.Count != 0)
{
textBox2.Text = dt.Rows[0][0].ToString();
}
else
{
MessageBox.Show("یافت نشد");
}
}

فیلد ها رو طبق جدول خودتون تغییر دهید
موفق باشید

محمد آشتیانی
چهارشنبه 19 مهر 1396, 08:16 صبح
سلام
به صورت کلی بنده مخالف اینم که کوئری داخل کد فرم نوشته بشه ، اما به هر حال ، برای اینکه یک تک مقدار رو از دیتابیس بخونید ، نیازی نیست از دیتاتیبل و این داستان ها استفاده کنید.

کدش به سادگی این کد میشه:


var con = new SqlConnection("Your Connection String");
var com = new SqlCommand("Your Query", con);


con.Open();
var result = com.ExecuteScalar();
textBox1.Text = result?.ToString() ?? string.Empty;
con.Close();


متد ExecuteScalar یک آبجکت به شما میده بعنوان خروجی ، که می تونید به دیتاتایپی که نیاز دارید Cast کنید (اینجا چون مقدار فیلد فرضی من nvarchar بوده از متد ToString استفاده کردم)



اگر فرض کنید مقداری که کوئری شما برمیگردونه از نوع int هست و میخواید جواب رو داخل یک متغیر از این نوع بریزید به این ترتیب میشه
int value;
value = result != null ? Convert.ToInt32(result) : 0;



کوئری Select خودتون رو هم به این صورت اصلاح بفرمائید لطفا
"SELECT fikharid FROM sabtkala WHERE namekala LIKE N'%" + textBox2.text + "%'"



موفق باشید.

pure_love
پنج شنبه 20 مهر 1396, 12:38 عصر
سلام
به صورت کلی بنده مخالف اینم که کوئری داخل کد فرم نوشته بشه ، اما به هر حال ، برای اینکه یک تک مقدار رو از دیتابیس بخونید ، نیازی نیست از دیتاتیبل و این داستان ها استفاده کنید.

کدش به سادگی این کد میشه:


var con = new SqlConnection("Your Connection String");
var com = new SqlCommand("Your Query", con);


con.Open();
var result = com.ExecuteScalar();
textBox1.Text = result?.ToString() ?? string.Empty;
con.Close();


متد ExecuteScalar یک آبجکت به شما میده بعنوان خروجی ، که می تونید به دیتاتایپی که نیاز دارید Cast کنید (اینجا چون مقدار فیلد فرضی من nvarchar بوده از متد ToString استفاده کردم)



اگر فرض کنید مقداری که کوئری شما برمیگردونه از نوع int هست و میخواید جواب رو داخل یک متغیر از این نوع بریزید به این ترتیب میشه
int value;
value = result != null ? Convert.ToInt32(result) : 0;



کوئری Select خودتون رو هم به این صورت اصلاح بفرمائید لطفا
"SELECT fikharid FROM sabtkala WHERE namekala LIKE N'%" + textBox2.text + "%'"



موفق باشید.

عالی بود دوست عزیز
واقعا ممنونم
ببخشید برا بک اپ گیری و ریستور چنین کد کوتاه و راحتی نمیگید استفاده کنم؟
چون پروژم فقط بک اپ گیریشو ریستورش مونده!
کد های زیادی تو سایت ها هست ولی هیچ کدوم هنوز کارم راه ننداختن
ممنون میشم راهنماییم کنید.
مرسی