2016-03-04 72 views
2

我目前正在開發一個項目。一個文件儲存庫系統。我使用C#窗體和MS Access 2010作爲我的數據庫。我用於存儲文檔的表格被命名爲「文檔」,並具有2列,即項目ID和文件(附件數據類型)。現在我可以使用openfiledialog瀏覽文件,但似乎無法上傳它。使用c將文件附加到ms訪問數據庫#

這是我上傳按鈕的當前代碼。

 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; 

截至目前,我已經可以根據我選擇的項目編號獲取項目編號。我需要添加什麼才能將文件附加到我的數據庫並顯示到gridview。

+0

您不能使用DML SQL語句來處理Access附件類型,這是一種多數據點的多面數據類型(一種一對多聯接的一種子表本身)。請參閱DAO方法,[LoadFromFile](https://msdn.microsoft.com/en-us/library/office/ff835669.aspx)。 – Parfait

回答

0

您可以上傳這樣的文件中的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) 
     { 

     } 
+0

它只添加文件名而不是附件 – user1429899

0

的Microsoft Access 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()); 
     } 
    }