我目前正在做一个项目。文档存储库系统。我正在使用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)
{
}