此方法按钮C#中的语法错误?

时间:2010-11-21 19:07:03

标签: c# ms-access syntax-error

我需要你的帮助,我找不到错误,这是紧急情况,这是我的方法 和错误的图像错误说“语法错误INSERT INTO语句”这里是一个图像,我怎么能解决它,无论它的结构如何

http://img718.imageshack.us/img718/8864/erroruh.jpg alt text

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();
  }
}
}

2 个答案:

答案 0 :(得分:1)

错误消息明确:INSERT INTO语句出错。

我没有看到任何SQL语法问题所以我猜它是关于一个保留字,尝试用[]转义它们:

string sql = "INSERT INTO IndicadorProyecto (idProyecto, idMes, [meta], [real]) 
             VALUES(@idProyecto , @idMes , @meta, @real)";

结合Remou对命名参数的观察,它变为:

string sql = "INSERT INTO IndicadorProyecto (idProyecto, idMes, [meta], [real]) 
             VALUES(?, ?, ?, ?)";

您必须非常小心地按正确的顺序添加参数。

答案 1 :(得分:0)

当您使用OLEDB提供商时,您可能不得不使用“?”参数的符号。您可以尝试以下查询:

string sql = "INSERT INTO IndicadorProyecto (idProyecto, idMes, [meta], [real]) 
         VALUES(?, ? , ?, ?)";