从C#应用程序在Access 2007 DB中插入和检索图像

从C#应用程序在Access 2007 DB中插入和检索图像,c#,visual-studio-2010,ms-access-2007,C#,Visual Studio 2010,Ms Access 2007,我需要在access数据库中插入一个具有OLE Object类型列的图像 我试图使用下面的代码,但它在insert语句中给了我一个语法错误,但我确信表名和列名以及imageContent值都不是空的 System.Data.OleDb.OleDbConnection MyConnection; private void Insert_Customer_Load(object sender, EventArgs e) { string strConn = @

我需要在access数据库中插入一个具有OLE Object类型列的图像 我试图使用下面的代码,但它在insert语句中给了我一个语法错误,但我确信表名和列名以及imageContent值都不是空的

    System.Data.OleDb.OleDbConnection MyConnection;
    private void Insert_Customer_Load(object sender, EventArgs e)
    {
        string strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Customer.accdb;Persist Security Info=True;Jet OLEDB:Database Password=123";
        MyConnection = new System.Data.OleDb.OleDbConnection(strConn);
    }

    private void InsertBtn_Click(object sender, EventArgs e)
    {
        System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
        string sql = null;

        MyConnection.Open();
        myCommand.Connection = MyConnection;
        byte[] imageContent = File.ReadAllBytes(imagePathTxt.Text);
        sql = "INSERT INTO [Customer_Data] (Image) VALUES (@photo)";
        myCommand.CommandText = sql;
        OleDbParameter ph = new OleDbParameter("@photo", OleDbType.VarBinary);
        ph.Value = imageContent;
        ph.Size = imageContent.Length;
        myCommand.Parameters.Add(ph);
        myCommand.ExecuteNonQuery();
        MyConnection.Close();
    }
我也试着用?而不是@photo,但也引发了相同的异常


提前感谢

我认为
图像
是一个保留字,所以可能只是您应该使用
[Image]
或者,更好的是,重命名该列。(顺便说一句,你确定要在数据库中存储图像吗?

我认为
Image
是一个保留字,所以可能只是你应该使用
[Image]
或者,更好的做法是重命名列。(顺便说一句,您确定要在数据库中存储图像吗?

重命名该列 您应该使用[Image]

重命名该列
您应该使用[Image]

请更具体一些。你说的是哪一行代码?应该重命名的列在哪里?请更具体一些。你说的是哪一行代码?应该重命名的列在哪里?