PDA

View Full Version : اشکال در ذخیره اطلاعات با Database اکسس



davidrobert
چهارشنبه 21 بهمن 1394, 23:44 عصر
سلام دوستان من از سه نوع کد نویسی برای ذخیره اطلاعات استفاده کردم ولی هر سه نوع دستور برای ذخیره اطلاعات این خطا رو به من میده
Syntax error in INSERT INTO statement.
برای رفع خطا نمیدونم چیکار باید کنم.
این هم سه نوع روش کنیم نویسی من که در اسکیول سرور جواب میده ولی در اکسس خطا میده.
//OleDbDataAdapter da = new OleDbDataAdapter();
//da.SelectCommand = new OleDbCommand("select * from Tbl_Moshtere", con);
//OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
//DataSet ds = new DataSet();
//da.Fill(ds, "Tbl_Moshtere");
//DataTable dt = ds.Tables["Tbl_Moshtere"];
//DataRow newRow = dt.NewRow();
//newRow["ID"] = TxtId.Text;
//newRow["Name"] = TxtName.Text;
//newRow["Last"] = TxtLast.Text;
//dt.Rows.Add(newRow);
//da.Update(ds, "Tbl_Moshtere");
OleDbCommand cmd = new OleDbCommand();
//con.Open();
//cmd.Connection = con;
//cmd.CommandText = "INSERT INTO Tbl_Moshtere (ID,Name,Last) VALUES (@ID,@Name,@Last)";
//cmd.Parameters.AddWithValue("@ID", TxtId.Text);
//cmd.Parameters.AddWithValue("@Name", TxtName.Text);
//cmd.Parameters.AddWithValue("@Last", TxtLast.Text);
//cmd.ExecuteNonQuery();
//con.Close();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT INTO Tbl_Moshtere (ID,Name,Last) VALUES (N'" + TxtId.Text + "',N'" + TxtName.Text + "',N'" + TxtLast.Text + "')";
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
ممنون میشم بگید برای رفع این خطا باید چیکار انجام بدم.

davidrobert
پنج شنبه 22 بهمن 1394, 12:03 عصر
کسی نیست بگه علت این خطا چی هستش من سه نوع کد نویسی انجام دادم در اسکیول سرور جواب میده اطلاعات رو ذخیره میکنه ولی در اکسس 2003 جواب گو نیست برای ذخیره اطلاعات
Syntax error in INSERT INTO statement.

Mahmoud Zaad
پنج شنبه 22 بهمن 1394, 12:10 عصر
سلام
در اکسس از N استفاده نمیشه. دوم اینکه در اکسس اگه رشته بخواید ثبت کنید از دوتا تک کوتیشن ' در طرفین عبارت استفاده میشه ولی برای عدد نیازی به ' در طرفین عدد نیست. اگه از پارامتر استفاده کنید دیگه این مشکل دوم رو نخواهید داشت.

davidrobert
پنج شنبه 22 بهمن 1394, 12:55 عصر
از پرامتر هم استفاده کردم مشاهده کنید با اون دستور هم خطا داده

Mahmoud Zaad
پنج شنبه 22 بهمن 1394, 13:12 عصر
پس مشکل از کلمه Name هست این کلمه از کلمات رزرو شده اکسس هست و شما نمی تونید از این کلمات به عنوان نام جدول یا نام فیلد استفادش کنید.

davidrobert
پنج شنبه 22 بهمن 1394, 17:15 عصر
دوست عزیز اسم Name رو عوض کردم به این صورت نوشتم Namee ولی باز همون خطا رو داد به سه نوع کد نویسی نوشتم این خطا
OleDbDataAdapter da = new OleDbDataAdapter();
da.SelectCommand = new OleDbCommand("select * from Tbl_Moshtere", con);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds, "Tbl_Moshtere");
DataTable dt = ds.Tables["Tbl_Moshtere"];
DataRow newRow = dt.NewRow();
newRow["ID"] = TxtId.Text;
newRow["Namee"] = TxtName.Text;
newRow["Last"] = TxtLast.Text;
dt.Rows.Add(newRow);
da.Update(ds, "Tbl_Moshtere");
OleDbCommand cmd = new OleDbCommand();
con.Open();
cmd.Connection = con;
cmd.CommandText = "INSERT INTO Tbl_Moshtere (ID,Namee,Last) VALUES (@ID,@Namee,@Last)";
cmd.Parameters.AddWithValue("@ID", TxtId.Text);
cmd.Parameters.AddWithValue("@Namee", TxtName.Text);
cmd.Parameters.AddWithValue("@Last", TxtLast.Text);
cmd.ExecuteNonQuery();
con.Close();
//cmd.CommandType = CommandType.Text;
//cmd.CommandText = "INSERT INTO Tbl_Moshtere (ID,Namee,Last) VALUES (" + TxtId.Text + ",'" + TxtName.Text + "','" + TxtLast.Text + "')";
//cmd.Connection = con;
//con.Open();
//cmd.ExecuteNonQuery();
//con.Close();

Mahmoud Zaad
پنج شنبه 22 بهمن 1394, 17:20 عصر
فیلد ID از نوع AutoNumber نیست؟
اصلاً این قسمت پروژه با دیتابیس رو آپلود کنید ببینم مشکل چیه.


**************
آقا Last هم رزروه!
دو تا لینک زیر رو نگاه کنید کلمات رزرو شده داخلش هست.
https://support.microsoft.com/en-us/kb/286335
(https://support.microsoft.com/en-us/kb/286335)
https://support.office.com/en-us/article/Access-2007-reserved-words-and-symbols-E33EB3A9-8BAA-4335-9F57-DA237C63EABE#__toc272229039

davidrobert
پنج شنبه 22 بهمن 1394, 18:19 عصر
ممنون مقدار last هم عوض کردم درست شد با Name