2012-02-19 72 views
1

嗯,我有一个简单的MS Access数据库所在的连接是好的,但我不断收到错误无法在我的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对象)

+0

你能发布你收到的完整错误吗? – 2012-02-19 10:22:14

回答

2

这个问题可能会发生如果您的数据库表包含使用Microsoft Jet 4.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(); 
} 
2

你的表名(IMAGE)的数据类型。为了逃避,你必须使用括号[ ]

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