سلام دوستان.
Capture.PNG
تو پروژه ام که در بالا عکسشو گذاشتم
میخوام زمانی که رو دکمه ای که با فلش مشخص کردم کلیک کردم
تو پایگاه داده ها نام کالای نوشته شده رو پیدا کنه و قیمت خریدش رو برامون تو تکس باکس نمایش بده
ممنونم
سلام دوستان.
Capture.PNG
تو پروژه ام که در بالا عکسشو گذاشتم
میخوام زمانی که رو دکمه ای که با فلش مشخص کردم کلیک کردم
تو پایگاه داده ها نام کالای نوشته شده رو پیدا کنه و قیمت خریدش رو برامون تو تکس باکس نمایش بده
ممنونم
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;
ولی کار نمیکنه پیغام میده ! کدی که دادین باید کجا بزارم ؟
چجوری بزارمش کار کنه ؟
ممنون میشم راهنمایی کنید
تشکر
با سلام
شما باید از 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("یافت نشد");
}
}
فیلد ها رو طبق جدول خودتون تغییر دهید
موفق باشید
لطفاً از پرسیدن سوال در خصوصی خودداری کنید.
قبل از ایجاد تاپیک، حتماً قوانین سایت را مطالعه فرمایید.
قوانین پرسش های دانشجویی
برای درست وارد شدن کد در قالب C# سایت، ابتدا کد رو درون Notepad.exe کپی سپس از اونجا به سایت در قالب C# منتفل کنید
نرم افزار code manager دستیار برنامه نویسان جهت نگهداری کد ها
سلام
به صورت کلی بنده مخالف اینم که کوئری داخل کد فرم نوشته بشه ، اما به هر حال ، برای اینکه یک تک مقدار رو از دیتابیس بخونید ، نیازی نیست از دیتاتیبل و این داستان ها استفاده کنید.
کدش به سادگی این کد میشه:
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 + "%'"
موفق باشید.
قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]