使用 C# 将文件附加到 MS Access 数据库



我目前正在做一个项目。文档存储库系统。我正在使用C#窗口表单和MS Access 2010作为我的数据库。我的文档存储表名为"文档",有 2 列,即项目 ID 和文件(附件数据类型)。我现在可以使用打开文件对话框浏览文件,但似乎无法上传它。

这是我上传按钮的当前代码。

        con = new OleDbConnection(cs);
        con.Open();     
        String num = lblPnum.Text.ToString();
        string a = "INSERT INTO [Documents]([ProjectID]) VALUES('"+ num + "')";
        cmd = new OleDbCommand(a);
        cmd.Connection = con;
        cmd.ExecuteReader();
        con.Close();
        MessageBox.Show("Document Successfully Added", "Prompt", MessageBoxButtons.OK, MessageBoxIcon.Information);
        this.Close();
        FrmHome home = new FrmHome();
        home.Show();
        home.statusPanel.Text = statusPanel.Text;

截至目前,我已经可以根据我选择的项目编号获取项目 ID。 我需要添加什么才能将文件附加到我的数据库并将其显示到 GridView。

篇关于Microsoft Docs的文章有一个工作示例: 在 DAO 中使用附件

var dbe = new DBEngine();
Database db = dbe.OpenDatabase(DBFilePath, ReadOnly: false);
// first record set is the table
Recordset rs = db.OpenRecordset("SELECT * FROM " + TableName); 
rs.MoveFirst();
rs.Edit(); 
// second record set is the actual field / cell in the table
Recordset2 rs2 = (Recordset2)rs.Fields["Attachments"].Value;
// add document
rs2.AddNew();
Field2 f2 = (Field2)rs2.Fields["FileData"];
f2.LoadFromFile(ImageFile);
rs2.Update();
rs2.Close();
rs.Update();
rs.Close()

Microsoft访问 14.0 对象库

是处理访问附件类型所必需的。示例代码如下。

    private void insertImageFileToMemo(String memoId)
    {
        var dbe = new DBEngine();
        Database db = dbe.OpenDatabase(@"D:yourdatabase.accdb");
        try
        {
            Recordset rstMain = db.OpenRecordset(
                    "SELECT memoId,memoImage FROM MyMemo WHERE MemoID = '" + memoId + "'",
                    RecordsetTypeEnum.dbOpenDynaset);
            rstMain.Edit();
            Recordset2 rstAttach = rstMain.Fields["memoImage"].Value;
            rstAttach.AddNew();
            Field2 fldAttach = (Field2)rstAttach.Fields["FileData"];
            fldAttach.LoadFromFile("memofile1.jpg");
            rstAttach.Update();
            rstAttach.Close();
            rstMain.Update();
            rstMain.Close();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
    }

您可以在MS Access中上传这样的文件,请记住,特定的DB位于应用程序的调试文件夹中,并且Access数据库的名称是DB

try
        {
            FileInfo file = new FileInfo("file.xlsx");

            using (var connection1 = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB.mdb"))
            {
                OleDbCommand cmd = new OleDbCommand();
                //SqlDataAdapter cmd = new SqlDataAdapter();
                using (cmd = new OleDbCommand("INSERT INTO simple (doc) values (@file)", connection1))
                {
                    //cmd.Connection = connection1;
                    connection1.Open();
                    cmd.CommandType = CommandType.Text;
                    cmd.Parameters.AddWithValue("@file", file);
                    cmd.ExecuteNonQuery();
                }
            }
        }
        catch (Exception ex)
        {
        }

相关内容

  • 没有找到相关文章

最新更新