PDA

View Full Version : این error برای چیست؟



روستا
یک شنبه 20 شهریور 1390, 15:29 عصر
با سلام و خسته نباشید.
من در C# 2010 برنامه ام رو نوشتم و همه چی ok هست ولی شیه ارور خیلی الکی می ده و برنامه رو اجرا نمی کنه. من همهی تنظیمات و ارتباط با SQL رو انجام دادم ولی در کدی که گذاشتم از
cmdclasf.ExecuteNonQuery();
ارور می گیره
لطفا راهنمایی کنید این برای چی اجرا نمی شه؟؟؟؟؟؟

SqlCommand


cmdclasf;



string strsql1;

strsql1 =

"INSERT INTO new(" + "date," + "code," + "name," + "family," + "sex," + "father," +



"birthday," + "telm," + "telmobile," + "telvaled," + "address," + "school," + "course," +



"avg," + "email," + "fatherjob," + "group1," + "pre," + "gh1," + "gh2," + "gh3," + "gh4," +



"gh5," + "gh6," + "gh7," + "gh8," + "gh9," + "m1," + "m2," + "m3," + "m4," + "m5," + "m6," + "m7," +



"m8," + "m9," +



") VALUES ('" + date.Text + "','" +txtcode.Text + "','" + name.Text + "','" + family.Text + "','" + sex.Text + "','" + father.Text + "','" + birthday.Text + "','" + telm.Text

+

"','" + telmobile.Text + "','" + telvaled.Text + "','" + address.Text + "','" + school.Text + "','" + course.Text + "','" + avg.Text + "','" + email.Text + "','" + fatherjob.Text + "','" + group.Text

+

"','" + pre.Text + "','" + gh1.Text + "','" + gh2.Text + "','" + gh3.Text + "','" + gh4.Text + "','" + gh5.Text + "','" + gh6.Text + "','" + gh7.Text + "','" + gh8.Text + "','" + gh9.Text + "','"

+ m1.Text +

"','" + m2.Text + "','" + m3.Text + "','" + m4.Text + "','" + m5.Text + "','" + m6.Text + "','" + m7.Text + "','" + m8.Text + "','" + m9.Text + "',)";

cmdclasf =

new SqlCommand(strsql1, con);

cmdclasf.ExecuteNonQuery();

con.Close();



MessageBox.Show("insert completed.");

ds.Clear();

da.Fill(ds,

"new");

AmirSlash
یک شنبه 20 شهریور 1390, 16:01 عصر
خوب چه پیغام خطایی میده؟

روستا
یک شنبه 20 شهریور 1390, 16:44 عصر
می زنه Incorrect syntax near ')'. از این خط cmdclasf.ExecuteNonQuery();

vhossein
یک شنبه 20 شهریور 1390, 17:11 عصر
دستور اس کیو ال قسمت آخرش غلطه.

قبل پرانتز , نداره دیگه.

ابتدا بانک را باز کن بعد دستور را اجرا و سپس بانک را ببند.(باز نکردی قبل اجرای دستور)

mjt10063
یک شنبه 20 شهریور 1390, 17:23 عصر
اینقدر دستور اس کی الت زیاده که آدم گم می کنه کجا بوده

ولی این ارور از گور دستور اس کیو ال
حتما یه جا اشتباه

روستا
یک شنبه 20 شهریور 1390, 17:51 عصر
بانکم رو که open می زنم از اون ارور می گیره اونو پاک کردم از این ارور می گیره اون , رو هم قبل پرانتز پاک کردم باز قبول نمی کنه. خدایا.....

seven7777777
یک شنبه 20 شهریور 1390, 19:29 عصر
دوست عزیز ناراحت نشو
چرا queryرو اینجوری نوشتی ؟؟؟
این روش خیلی اشتباهه .
من اصلا رغبت نکردم کوئریتو کامل بخونم . سعی کن از روش های استاندارد استفاده کنی .
به عنوان نمونه :

SqlCommand _com = new SqlCommand();
try
{
_com = DbFuncs.Connect().CreateCommand();
_com.CommandText = "INSERT INTO docs VALUES (@id,@co,@ti,@si,@gg,@ty,@st,@pr,@ye,";
_com.CommandText += "@di,@ve,@or,@le,@g1,@g2,@g3,@de,@cr,@pi)";
_com.Parameters.Add("@id", SqlDbType.Int).Value = newDoc.id;
_com.Parameters.Add("@co", SqlDbType.NChar).Value = newDoc.code;
_com.Parameters.Add("@ti", SqlDbType.NVarChar).Value = newDoc.title;
_com.Parameters.Add("@si", SqlDbType.TinyInt).Value = newDoc.subjectId;
_com.Parameters.Add("@gg", SqlDbType.TinyInt).Value = newDoc.goalGroupId;
_com.Parameters.Add("@ty", SqlDbType.TinyInt).Value = newDoc.typeId;
_com.Parameters.Add("@st", SqlDbType.TinyInt).Value = newDoc.stateId;
_com.Parameters.Add("@pr", SqlDbType.NVarChar).Value = newDoc.producer;
_com.Parameters.Add("@ye", SqlDbType.SmallInt).Value = newDoc.year;
_com.Parameters.Add("@di", SqlDbType.NVarChar).Value = newDoc.distrib;
_com.Parameters.Add("@ve", SqlDbType.Int).Value = newDoc.versions;
_com.Parameters.Add("@or", SqlDbType.NVarChar).Value = newDoc.organ;
_com.Parameters.Add("@le", SqlDbType.Bit).Value = newDoc.level;
_com.Parameters.Add("@g1", SqlDbType.Bit).Value = newDoc.goal1;
_com.Parameters.Add("@g2", SqlDbType.Bit).Value = newDoc.goal2;
_com.Parameters.Add("@g3", SqlDbType.Bit).Value = newDoc.goal3;
_com.Parameters.Add("@de", SqlDbType.NVarChar).Value = newDoc.docExt;
_com.Parameters.Add("@cr", SqlDbType.Int).Value = newDoc.course;
_com.Parameters.Add("@pi", SqlDbType.TinyInt).Value = newDoc.partId;
_com.ExecuteNonQuery();
}
catch (SqlException sqlEx)
{
throw new Exception(sqlEx.Message);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
_com.Connection.Close();
}

این یک نمونه خیلی ساده هست . فقط توضیح اینکه اون کلاس اول میاد و کانکشنو میسازه و باز میکنه . به نوع نوشتن کوئری و دادن پارامترها دقت کن .
موفق باشی

seven7777777
یک شنبه 20 شهریور 1390, 19:31 عصر
و یه پیشنهاد :
هر وقت یک کوئری نوشتی که خطا داد ، اونو کپی کن و تو محیط SQL اجرا کن . اونجا بررسی کن ببین اشکالش از کجاست ، بعد تو برنامت اصلاحش کن .

روستا
یک شنبه 20 شهریور 1390, 20:09 عصر
ممنون عالی بود لطف کردید