无法更新字段类型附件MS Access

时间:2015-10-29 12:55:15

标签: c# winforms

它可以从ms访问中选择数据并显示gridview,但它无法更新字段类型附件。

string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\500.accdb;Jet OLEDB:Database Password=";

using (OleDbConnection MyConn = new OleDbConnection(ConnStr))
{
    MyConn.Open();
    var StrCmd = "UPDATE ข้อมูลรถ SET รูปรถ = @p2 WHERE ลำดับ = @p1";
    OleDbCommand oldcommand = new OleDbCommand(StrCmd, MyConn);
    byte[] pic = File.ReadAllBytes(@"D:\test.png");

    oldcommand.CommandType = CommandType.Text;
    oldcommand.CommandText = StrCmd;
    oldcommand.Parameters.AddWithValue("@p2", pic);
    oldcommand.Parameters.AddWithValue("@p1", "1");

    try
    {
        oldcommand.ExecuteNonQuery();
    }
    catch (Exception ex)
    {

    }
}

二手代码

var StrCmd = "UPDATE ข้อมูลรถ SET สี = @p2 WHERE ลำดับ = @p1";

它可以更新另一个字段。但只有รูปถ字段无法更新。

使用代码

var StrCmd = "UPDATE ข้อมูลรถ SET รูปรถ.Value = @p2 WHERE ลำดับ.Value = @p1";

无法执行,错误>> "没有给出一个或多个必需参数的值。"

enter image description here enter image description here

2 个答案:

答案 0 :(得分:0)

首先需要确定列的主键value。然后将您的查询更改为以下内容:

var StrCmd = "UPDATE ข้อมูลรถ SET รูปรถ.Value = @p2 WHERE ลำดับ.Value = @p1";

在这里进一步阅读Using multivalued fields in queries

答案 1 :(得分:0)

试试这个:

var StrCmd = "UPDATE ข้อมูลรถ SET รูปรถ.Value = @p2 WHERE ลำดับ.Value = @p1";