【发布时间】:2011-05-13 11:41:48
【问题描述】:
我需要你的帮助,我找不到错误,这是紧急情况,这是我的方法 和错误的图像错误说“语法错误INSERT INTO语句”这里是一个图像,我该如何修复它,无论它的结构如何
http://img718.imageshack.us/img718/8864/erroruh.jpg
private void btnCronograma_Click(object sender, EventArgs e)
{
string connstring = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\amaury\\Documents\\TEC\\Septimo Semestre\\Administracion de proyectos de ingenieria de softwaere\\nuevo4\\nuevo\\Office\\Office\\Policias.accdb";
using (OleDbConnection conn = new OleDbConnection(connstring))
{
conn.Open();
string sql = "INSERT INTO IndicadorProyecto (idProyecto, idMes, meta, real) VALUES(@idProyecto , @idMes , @meta, @real)";
OleDbCommand cmd = new OleDbCommand(sql, conn);
foreach (DataGridViewRow row in dataGridView8.Rows)
{
DataGridViewComboBoxCell combo3 = row.Cells["idProyecto"] as DataGridViewComboBoxCell;
DataGridViewComboBoxCell combo4 = row.Cells["idMes"] as DataGridViewComboBoxCell;
if (combo3 == null || combo4 == null)
{
MessageBox.Show("No se pudo convertir");
continue;
}
int idProyecto = int.Parse(combo3.Value.ToString());
int idMes = int.Parse(combo4.Value.ToString());
int meta = int.Parse(row.Cells[3].Value.ToString());
int real = int.Parse(row.Cells[4].Value.ToString());
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@idProyecto", idProyecto);
cmd.Parameters.AddWithValue("@idMes", idMes);
cmd.Parameters.AddWithValue("@meta", meta);
cmd.Parameters.AddWithValue("@real", real);
cmd.ExecuteNonQuery();
}
}
}
【问题讨论】:
-
我很确定这些值应该是
VALUES (?,?,?,?) -
您如何进一步解释?您的意思是更改 VALUES (?,?,?,?) 的值部分
-
我认为 remou 的意思是 Access 不支持命名参数(如@meta)
-
不是ODBC不支持命名参数吗?
-
@David-W-Fenton OLEDB,上面使用,不支持 MS Access (msdn.microsoft.com/en-us/library/8e5545e1.aspx) 的命名参数,但据我所知,支持 SQL Server (msdn.microsoft.com/en-us/library/yy6y35y8(VS.71).aspx ),所以说“Access 不支持命名参数”可能不是完整的故事,但对于这篇文章的评论来说似乎足够合理。
标签: c# ms-access syntax-error