سلام.
خسته نباشید.
من یه جستجو تو دیتابیس کردم و حالا می خوام مثلا یه کد تو یه تکست باکس وارد کنم و چک کنم که آیا کد وارد شده تو نتایج جستجو بوده یا نه؟
ممنون.
Printable View
سلام.
خسته نباشید.
من یه جستجو تو دیتابیس کردم و حالا می خوام مثلا یه کد تو یه تکست باکس وارد کنم و چک کنم که آیا کد وارد شده تو نتایج جستجو بوده یا نه؟
ممنون.
اول باید یه کوئری با داده های تکست باکست از دیتابیس بگیری بعدش بریزیش تو یه دیتا تیبل و اگه تعداد سطر های دیتا تیبل بزرگتر از صفر بود یعنی داده وجود داشته. من یه نمونه برای لاگین که مال یه برنامه قدیمی خودم هست رو میذارم:
اول این کدا رو بنا بر دیتابیست که داری(مال من اکسس بوده) زیر کلاس فرم بزار:
کد:static OleDbConnection con = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=database.mdb;jet oledb:Database Password=******");
OleDbDataAdapter da = new OleDbDataAdapter("", con);
DataSet ds = new DataSet();
بعدشم اینا رو تو رویداد کلیک دکمت بزار:
کد:string s = "select id from login where type='" + type + "'and users='" + textBoxX1.Text + "' and id='" + textBoxX2.Text + "' ";
OleDbDataAdapter da = new OleDbDataAdapter(s, con);
da.Fill(ds, "t1");
if (ds.Tables["t1"].Rows.Count > 0)
{
if (comboBoxEx1.SelectedIndex == 0)
variable.i = 1;
else
variable.i = 2;
this.Hide();
main fm = new main();
fm.ShowDialog();
}
else
{
MessageBox.Show("رمز عبور یا نام کاربری اشتباه می باشد", "اخطار");
}
البته بنا به نیازت خودت کدا رو تغییر بده من کمپلت برات گذاشتم:31:
سلام.
من کوئری رو اینطوری نوشتم:
حالا می خوام یه کد وارد کنم. بعد چک کنم که کدی که دادم تو خروجی دستور بالا هست یا نه؟کد:
DataTable dt = Program.select("select cus_id from customer");
فکر می کنم یه if بیشتر نخواد. اگه راهنمایی کنید ممنون میشم.
البته program.select یه تابع هست که کار select رو انجام میده.
خوب یه if بزار تو مثال بالا من گفتم که کمپلت گذاشتم. من بنا بر نیاز خودم یه چیزای دیگه ای رو هم برسی کرده بودم.شما رو قسمت زیر تمرکز کن:
کد:if (ds.Tables["t1"].Rows.Count > 0)
{
درصورت پیدا شدن این قسمت اجرا میشه
}
else
{
در صورت پیدا نشدن هم این قسمت اجرا میشه
}
سلام.
ببخشید t1 چیه؟
من با dataset آشنایی ندارم. اگه بخوام با همون datatabel بنویسم چی میشه؟
ممنون.
اگه با دیتاتیبل بنویسی دیگه نیاز نیست که بهش اسم بدی. دیتاست تشکیل شده از مجموعه ای از دیتاتیبل ها که برای استفاده از اونا باید بهشون اسم بدیم.
شما با دیتاتیبل به صورت زیر بنویس:
کد:datatable dt=new datatable();
da.fill(dt);
if (dt.Rows.Count > 0)
{
درصورت پیدا شدن این قسمت اجرا میشه
}
else
{
در صورت پیدا نشدن هم این قسمت اجرا میشه
}
سلام.
من یه جستجوی کلی توی دیتاتیبلم نوشتم و در حالت معمولی همیشه خروجی داره.
اگه ما تعداد ردیف هایی که برگردونده رو چک کنیم به جوابمون نمی رسیم.
مثلا فرض کنید تو یه لیست باکس یه سری مقادیر داریم.
بعد اگه کد زیر رو تو یه if بنویسیم، چک می کنه اگه مقدار MaskedTextbox1 تو لیست باکس بود بهمون جواب درست رو می ده.
من دنبال یه همچین کدی برای دیتاتیبل هستم.کد:
if (listBox1.Items.Contains(maskedTextBox1.Text))
البته کد بالا رو برای مثال گفتم و مطمئنم همتون کد رو از قبل بلد هستین.
سلام.
با توجه به نمونه ای که در بالا گفتم:
کسی جوابش رو نمی دونه؟:19:کد:if (listBox1.Items.Contains(maskedTextBox1.Text))
سلام
جواب بنظر خیلی ساده است!
آنقدر که من دارم به خودم شک میکنم که شاید جایی از چیزیکه خواسته اید را درست متوجه نشده باشم.
بحرحال از چیزیکه من متوجه شدم، همچین دستوری عمل مورد نظرتان را انجام میدهد.
من فرض کردم یک عدد Int32 است، ولی نوع فیلد مورد پردازش میتواند هرچیزی باشد، کافی است آرگومان ورودی تابع Containes و پارامتر Add شده dbCom را اصلاح کنید.
(ترجیحاً دستور try برای هندلر خطاهای احتمالی را هم اضافه کنید)
موفق باشید.کد:public bool Containes(int fieldvalue)
{
//if (string.IsNullOrEmpty(fieldvalue)) return false; //for string fields ...
using (var dbCon = new System.Data.SqlClient.SqlConnection("---CONNECTIONSTRING---"))
using (var dbCom = new System.Data.SqlClient.SqlCommand("SELECT COUNT(*) FROM [TableName] WHERE [FieldName] = @FiledValue;", dbCon))
{
dbCom.Parameters.Add("@FiledValue", System.Data.SqlDbType.Int).Value = fieldvalue;
dbCon.Open();
object result = dbCom.ExecuteScalar();
return (result != null) && (result != System.DBNull.Value) && (System.Convert.ToInt64(result) > 0L);
}
}