无法在我的Access数据库中插入图像

时间:2012-02-19 10:14:09

标签: c# .net ms-access c#-4.0

我有一个简单的MS Access数据库,连接正常,但我一直收到错误

  

INSERT INTO语句中的语法错误

private void btnSave_Click(object sender, EventArgs e)
{
   byte[] picbyte = System.IO.File.ReadAllBytes(imgFile);
   try
   {
      conn = new OleDbConnection(connstring);
      conn.Open();
      sqlcom = new OleDbCommand("INSERT INTO Image (Img) values (@Img)", conn);
      sqlcom.Parameters.AddWithValue("@Img", picbyte);
      sqlcom.ExecuteNonQuery();
   }
   catch (Exception ex)
   {
      MessageBox.Show(ex.Message);
   }
   finally
   {
      conn.Close();
   }
}

我的表名是Image,列是ImgId(自动编号)和Img(OLE对象)

3 个答案:

答案 0 :(得分:4)

试试这个:

byte[] picbyte = System.IO.File.ReadAllBytes(imgFile);
using (var connection = new OleDbConnection(connstring))
using (var command = connection.CreateCommand())
{
    connection.Open();
    command.CommandText = "INSERT INTO [Image] (Img) VALUES (@Img)";
    command.Parameters.AddWithValue("@Img", picbyte);
    command.ExecuteNonQuery();
}

答案 1 :(得分:2)

如果您的数据库表包含使用Microsoft Jet 4.0保留字的列名,可能会发生此问题,您是否可以尝试更改表名?

答案 2 :(得分:2)

您的表名(IMAGE)是数据类型。为了避免这种情况,你必须使用括号[ ]

command.CommandText = "INSERT INTO [Image] (Img) VALUES (@Img)";