PDA

View Full Version : سوال: خطا در برنامه کتابخانه و پایگاه داده



roya_roya
جمعه 20 خرداد 1390, 16:39 عصر
سلام
من يه برنامه كتابخانه مي خوام بنويسم ولي از ابتدا به مشكل بر خوردم
با سي شارپ 2005 و با استفاده از پايگاه داده خود سي شارپ
واسه جستجو ارور مي گيره اينم كدي هست كه مي نويسم


SqlConnection bconnection2 = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\boook.mdf;Integrated Security=True;User Instance=True");
DataSet bookds;
bconnection2.Open();
//step2
SqlCommand bcmd = new SqlCommand();
bcmd.CommandText = "Select * from book where code_b = " + code.Text;

//step3
bcmd.Connection = bconnection2;
bookds = new DataSet();
SqlDataAdapter dataAdaptor = new SqlDataAdapter();
dataAdaptor.SelectCommand = bcmd;
**** dataAdaptor.Fill(bookds, "book");
//step4
dataGridView1.Visible = true;
dataGridView1.DataSource = bookds.Tables[0];
bconnection2.Close();
code.Text="";
g

اون خطي كه ستاره گذاشتم ارور مي گيره كد تو جدول كتاب از نوع varnchar هست چون كد يصي كتاباي كه بايد ذخيره بشه به صورت 301/1/1 هست.
ممنونم اگه كمكم كنيد.

اينم عكس از خطايي كه مي گيره من كد500/1 وارد مي كنم كه يكي از كدهاي كتاب در جدول ذخيره شده

http://up.vatandownload.com/images/7bf4upm9jz8k1f7w8rxi.jpg

hjran abdpor
جمعه 20 خرداد 1390, 17:49 عصر
بهتره کد خطا را بزاری.

hjran abdpor
جمعه 20 خرداد 1390, 17:56 عصر
دوست عزیز شما دارید جستجو میکیند پس باید یه مقداری را بازگشت بدین این دستور شما چیزی به اسم متغییر بازگشتی ندارد(متغییری که مقدار جستجو را نشان دهد )
این یه کد که ساختار جستجو را برای شما نشان میدهد
این نمونه با کد
TextBox1.Text = TextBox1.Text.Trim();
TextBox2.Text = TextBox2.Text.Trim();
TextBox4.Text = TextBox4.Text.Trim();

string ch1 = "select * from table1 where 0=0 ";
string ch2 = "";

string ch3 = "";

if (TextBox1.Text != "")
{
ch2 = " and name='" + TextBox1.Text + "'";
}

if (TextBox2.Text != "")
{

ch2 = ch2 + " and family='" + TextBox2.Text + "'";
}

if (TextBox4.Text != "")
{

ch2 = ch2 + " and std='" + TextBox4.Text + "'";
}
if (TextBox3.Text != "")
{

ch2 = ch2 + " and num"+DropDownList1.SelectedItem.Value.ToString()+ TextBox3.Text + "";
}

ch3 = ch1 + ch2;

OleDbConnection con = new OleDbConnection();
con.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=d:\\main.mdb";
OleDbDataAdapter da = new OleDbDataAdapter(ch3 , con);
DataSet ds = new DataSet();
con.Open();
da.Fill(ds, "table1");
GridView1.DataSource = ds.Tables["table1"].DefaultView;
GridView1.DataBind();
con.Close();

roya_roya
شنبه 21 خرداد 1390, 08:18 صبح
كسي نيست اين مشكل بدونه چه طور بر طرف مي كنن:گریه:

roya_roya
دوشنبه 23 خرداد 1390, 09:07 صبح
يعني واقها كسي نيست كمك كنه!
جالبه!

Directx
دوشنبه 23 خرداد 1390, 09:26 صبح
من که عکس خطایی که گذاشتین رو نمی بینم خداقل بگید چه خطایی می ده تا بتونیم کمک کنیم

Esmail Solhkhah
دوشنبه 23 خرداد 1390, 10:14 صبح
bcmd.CommandText = "Select * from book where code_b = '" + code.Text+"'";

Directx
دوشنبه 23 خرداد 1390, 11:06 صبح
دوست عزیز احتمالا مشکل از دیتابیس شماست شما نوع فیلد code_b رو از نوع int تعریف کردین در حالی که مثلا کد شما با داده ی 500/1 نمی تونه یک int باشه فیلد code_b رو از یک نوع مثلا nvarchr تعریف کنید و دستورتون رو مثل همین پست بالایی به دیتابیس بدید

roya_roya
دوشنبه 23 خرداد 1390, 11:53 صبح
نه كد code_b دي ديتا بيس هم از نوع كاراكتر هست
ممنون مشكلم حل شد