PDA

مشاهده نسخه کامل : مشكلاتي پيرامون SQL در C#



yaghoot200
11-09-11, 03:13
سلام من یه مشکلی داشتم وقتی این کدو اجرا میکنم

SqlConnection con;
string strcon;
strcon = "Data Source=.;Initial Catalog=Ajans;Integrated Security=True";
con = new SqlConnection(strcon);
SqlDataAdapter da;
string strsel;
con.Open();
strsel = "select from ranandeh where SH_Personeli='" + textBox1.Text + "'";
da = new SqlDataAdapter(strsel, con);
DataSet ds = new DataSet();
da.Fill(ds,"Ranandeh");
dataGridView1.DataBindings.Add(new Binding("data source", ds, "ranandeh"));
con.Close();
این خط زرد میشه da.Fill(ds,"Ranandeh");ویه پیغام میده Incorrect syntax near the keyword 'from'.
میشه کمکم کنید لطفا

ravegoat
11-09-11, 14:01
سلام من یه مشکلی داشتم وقتی این کدو اجرا میکنم

SqlConnection con;
string strcon;
strcon = "Data Source=.;Initial Catalog=Ajans;Integrated Security=True";
con = new SqlConnection(strcon);
SqlDataAdapter da;
string strsel;
con.Open();
strsel = "select from ranandeh where SH_Personeli='" + textBox1.Text + "'";
da = new SqlDataAdapter(strsel, con);
DataSet ds = new DataSet();
da.Fill(ds,"Ranandeh");
dataGridView1.DataBindings.Add(new Binding("data source", ds, "ranandeh"));
con.Close();
این خط زرد میشه da.Fill(ds,"Ranandeh");ویه پیغام میده Incorrect syntax near the keyword 'from'.
میشه کمکم کنید لطفا

با سلام!

دوست گرامي عضويت شما رو در PCN تبريك مي گم.

خطاي شما به احتمال زياد از خطي است كه با رنگ قرمز مشخص كردم. شما عبارت * رو از فرمان جا انداختيد. لطفا" اين خط رو به شكل زير اصلاح كنيد:





strsel = "select * from ranandeh where SH_Personeli='" + textBox1.Text + "'";

اميدوارم كه مشكل حل بشه. درصورتي كه مشكل همچنان باقي موند لطفا" تطابق نام ستون SH_Personeli رو در جدول ranandeh بررسي كنيد.

موفق باشيد
آرمين

yaghoot200
11-09-11, 19:44
سلام اون خطی رو که گفتین درست کردم حالا واسه این خطه

dataGridView1.DataBindings.Add(new Binding("data source", ds, "ranandeh"));

این پیغامو میده Cannot bind to the property 'data source' on the target control.
Parameter name: PropertyName

ravegoat
11-09-11, 22:42
سلام اون خطی رو که گفتین درست کردم حالا واسه این خطه

dataGridView1.DataBindings.Add(new Binding("data source", ds, "ranandeh"));

این پیغامو میده Cannot bind to the property 'data source' on the target control.
Parameter name: PropertyName

در DataBinding مربوط به يك كنترل پارامتر اول مربوط به خاصيت اون كنترل ميشه.

در سورس شما كنترل مورد نظر يك DataGridView هستش و گمان مي كنم خاصيت مورد نظر شما DataSource بوده كه در بين آن يك فاصله وجود نداره. پيشنهاد مي كنم اين خط رو به شكل زير اصلاح كنيد:





dataGridView1.DataBindings.Add(new Binding("DataSource", ds, "ranandeh"));

اميدوارم مشكل حل بشه
آرمين

yaghoot200
12-09-11, 01:46
مرسی واقعا ممنونم مشکلم حل شد ببخشید میدونم درخواستی که دارم خیلی زیاده اما امکانش هست کد این برنامه رو برای دکمه update بگید آخه من باید پروژه تحویل بدم اگه کمکم کنید ممنون میشم

ravegoat
12-09-11, 10:35
مرسی واقعا ممنونم مشکلم حل شد ببخشید میدونم درخواستی که دارم خیلی زیاده اما امکانش هست کد این برنامه رو برای دکمه update بگید آخه من باید پروژه تحویل بدم اگه کمکم کنید ممنون میشم

دوست عزيز منظور تون از دكمه ي update چيه؟ اگر منظورتون Update پايگاه SQL است، منبع داده ها چيه؟

براي آپديت داده ها در پايگاه SQL مي تونيد از اين مقاله (Only the registered members can see the link) و از اين سورس (Only the registered members can see the link) كمك بگيريد.

موفق باشيد
آرمين

yaghoot200
15-09-11, 19:43
سلام میگم این سورسه با ویژوال استیدیو چنده

yaghoot200
16-09-11, 00:06
سلام دوباره مشکل داشتم بالاخره کد update پیداکردم اما درهنگام اجرا خطایی دارد این کد update

SqlConnection con;
string strcon;
strcon = "Data Source=.;Initial Catalog=Ajans;Integrated Security=True";
con = new SqlConnection(strcon);
SqlCommand cmd;
cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "update moshteri Nam=@Nam,Family=@Family,Tel=@Tel,Adress=@Adress where SH_Eshterak=@SH_Eshterak";
cmd.Parameters.AddWithValue("@Nam", textBox1.Text);
cmd.Parameters.AddWithValue("@Family", textBox2.Text);
cmd.Parameters.AddWithValue("@SH_Eshterak", textBox3.Text);
cmd.Parameters.AddWithValue("@Tel", textBox4.Text);
cmd.Parameters.AddWithValue("@Adress", textBox5.Text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();

دراین خط هنگام اجرا برایم پیغام زرد رنگ میاید

cmd.ExecuteNonQuery();

پیغام Line 1: Incorrect syntax near 'Nam'.

توروخدا مثل دفعه های قبل لطف کنید مشکلو حل کنید ممنون.

ravegoat
17-09-11, 09:11
سلام دوباره مشکل داشتم بالاخره کد update پیداکردم اما درهنگام اجرا خطایی دارد این کد update

SqlConnection con;
string strcon;
strcon = "Data Source=.;Initial Catalog=Ajans;Integrated Security=True";
con = new SqlConnection(strcon);
SqlCommand cmd;
cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "update moshteri Nam=@Nam,Family=@Family,Tel=@Tel,Adress=@Adress where SH_Eshterak=@SH_Eshterak";
cmd.Parameters.AddWithValue("@Nam", textBox1.Text);
cmd.Parameters.AddWithValue("@Family", textBox2.Text);
cmd.Parameters.AddWithValue("@SH_Eshterak", textBox3.Text);
cmd.Parameters.AddWithValue("@Tel", textBox4.Text);
cmd.Parameters.AddWithValue("@Adress", textBox5.Text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();

دراین خط هنگام اجرا برایم پیغام زرد رنگ میاید

cmd.ExecuteNonQuery();

پیغام Line 1: Incorrect syntax near 'Nam'.

توروخدا مثل دفعه های قبل لطف کنید مشکلو حل کنید ممنون.

با سلام!

اون سورس احتمالا" براي VS 2010 هستش.

فرمان Update شما به صورت غلط پيكره بندي شده. لطفا" خط مشخص شده به رنگ قرمز را به صورت زير تغيير دهيد:




cmd.CommandText = "update moshteri set Nam=@Nam,Family=@Family,Tel=@Tel,Adress=@Adress where SH_Eshterak=@SH_Eshterak";



احتمالا" مشكلتون با افزودن كلمه ي SET به صورت فوق حل بشه. ساير پارامتر هاي سورس تون هم درست بود. در صورت رفع نشدن مشكل، ارتباطات پايگاه دادتون رو بررسي كنيد.

موفق باشيد
آرمين

yaghoot200
17-09-11, 13:32
این کاری رو که گفتین انجام دادم اما در زمان اجرا دیگه دکمه update اصلا کارنمکرد به عبارتی باکلیک روش اصلا هیچ کاری صورت نمگرفت انگار غیرفعال شده بود نه خطایی نه چیزی

ravegoat
17-09-11, 15:42
دوست گرامي! همون طور كه گفته بودم، بنده سورس رو تست كردم و خوشبختانه بدون مشكل كار مي كرد.


اين سورس براساس SH_Eshterak ركود ها رو آپديت مي كنه. اگه SH_Eshterak اي رو كه شما در textBox3 وارد مي كنيد در جدول moshteri وجود نداشته باشه، هيچ اتفاق خاصي نمي افته و حتي خطايي هم مبتي بر عدم وجود مقدار وارد شده در جدول رخ نميده.

اگه دستور با موفقيت هم انجام بشه باز شما پيامي براي اجراي صحيح دستور دريافت نمي كنيد. به علاوه اگه جدول در حال نمايش با كنترلي نظير dataGridView هستش، با آپديت جدول، dataGridView همچنان داده هاي قديمي رو نشون مده مگر اينكه شما اين كنترل رو هم آپديت كنيد.

پيشنهاد مي كنم با اجراي دستور براساس يك مقدار SH_Eshterak كه در جدولتون موجوده، برنامه رو ببنديد و با SQL Server جدول رو چك كنيد كه آيا آپديت شده يا نه؟ در صورتي كه جدول آپديت نشده بود، لطفا" نام فيلد ها در برنامه و جدول اصلي رو با هم انطباق بديد و به علاوه ConnectionString رو هم بررسي كنيد.

موفق باشيد
آرمين

yaghoot200
17-09-11, 17:47
من رفتم چک کردم جدولم update شده بود اما به قول شما هیچ پیامی نمیاد یا صفحه ایه رو نشون نمیده اشکال نداره؟ من بعد خودم میرم چک میکنم میبینم تغییر کرده پس کد برام درست کار کرده؟

ravegoat
17-09-11, 19:59
نه اشكالي نداره.

در واقع فرمان ExecuteNonQuery هنگامي كه به طور موفقيت آميز اجرا ميشه، مقدار 1 رو بر مي گردونه. مقدار غير از يك به معني عدم اجراي صحيح فرمان هستش. شما مي تونيد با يه عبارت شرطي و استفاده از MessageBox از انجام صحيح دستور مطلع بشيد:



if (cmd.ExecuteNonQuery() == 1)
{
MessageBox.Show("The command executed successfully.","",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
else
{
MessageBox.Show("The command not executed successfully.", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}

شاد باشيد
آرمين

yaghoot200
17-09-11, 20:12
SqlConnection con;
string strcon;
strcon ="Data Source=.;Initial Catalog=Ajans;Integrated Security=True";
con = new SqlConnection(strcon);
SqlCommand cmd;
cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "update moshteri set Nam=@Nam,Family=@Family,Tel=@Tel,Adress=@Adress where SH_Eshterak=@SH_Eshterak";
cmd.Parameters.AddWithValue("@Nam", textBox1.Text);
cmd.Parameters.AddWithValue("@Family", textBox2.Text);
cmd.Parameters.AddWithValue("@SH_Eshterak", textBox3.Text);
cmd.Parameters.AddWithValue("@Tel", textBox4.Text);
cmd.Parameters.AddWithValue("@Adress", textBox5.Text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
if (cmd.ExecuteNonQuery() == 1)
{
MessageBox.Show("The command executed successfully.", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("The command not executed successfully.", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}


به خداشرمنده هستم اما هنگام اجرای این کد یه پیغام زرد رنگ ExecuteNonQuery requires an open and available Connection. The connection's current state is closed.

برای کد if (cmd.ExecuteNonQuery() == 1) امد چیکار کنم ممنون.


راستی جدول رو برام تغییر داد اما این پیغام زرده اومد

ravegoat
18-09-11, 14:40
شما نمي تونيد زماني كه ارتباط با ديتابيس رو Close مي كنيد، براي پايگاه درخواست (Query) بفرستيد. پس بايد كد رو به شكل زير اصلاح كنيد:



SqlConnection con;
string strcon;
strcon ="Data Source=.;Initial Catalog=Ajans;Integrated Security=True";
con = new SqlConnection(strcon);
SqlCommand cmd;
cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "update moshteri set Nam=@Nam,Family=@Family,Tel=@Tel,Adress=@Adress where SH_Eshterak=@SH_Eshterak";
cmd.Parameters.AddWithValue("@Nam", textBox1.Text);
cmd.Parameters.AddWithValue("@Family", textBox2.Text);
cmd.Parameters.AddWithValue("@SH_Eshterak", textBox3.Text);
cmd.Parameters.AddWithValue("@Tel", textBox4.Text);
cmd.Parameters.AddWithValue("@Adress", textBox5.Text);
con.Open();
if (cmd.ExecuteNonQuery() == 1)
{
MessageBox.Show("The command executed successfully.", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("The command not executed successfully.", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
con.Close();

موفق باشيد
آرمين

yaghoot200
18-09-11, 17:24
توی اجرا واسه این خط con = new SqlConnection(strcon);

پیغام زرد میده Keyword not supported: 'integrated security'.

ویرایشم هم روی جدول بی اثر بوده دفعه های قبلی جدول حداقل تغییر میکرد اما اینبار نه

yaghoot200
20-09-11, 22:16
میشه جواب بدید چی شد.

ravegoat
21-09-11, 00:01
دوست گرامي! اين خطا مربوط به نامعتبر بودن رشته ي اتصال شماست (فقط يه كاكتر Space اضافي بود!!!). وقتي هم اين مشكل پيش بياد طبيعي هستش كه بانك update نشه. مشكل هم از اينجا ناشي ميشه كه شما سورسي كه بنده قرار داده بودم رو مستقيما" داخل محيط كد نويسي كپي كرديد. به خاطر تبديل فارسي به انگليسي و بلعكس گاهي ممكنه چندين كاركتر اضافي وارد سورس بشه كه در برخي مواقع مشكل آفرينه كه متاسفانه اينجا هم چنين شد. البته حق بديد كه تشخيص كمي سخته.
لطفا" به جاي كپي پيست كردن سورس كمي هم به ساختار كد توجه كنيد. بنده تنها جاي يه خط دستور رو با يه عبارت شرطي عوض كردم. سورسي كه قرار داده بودم رو ويرايش كردم ولي ممكنه كه باز هم مشكل داشته باشه كه پيشاپيش عذر خواهي مي كنم.

فكر كنم يه خطا هم پيرامون تكرار ستون داشتيد كه احتمالا" به خاطر اين بود كه پارامتر Palak رو دو بار در فرمان آپديت تكرار كرده بوديد.

موفق باشيد
آرمين