2012-05-21 61 views
0

我有這個代碼在fidderent窗體中正常工作。但不知何故,在具體的形式,它不工作,我得到這個錯誤(在該行connction.Open();Unspecified error不使用oledb打開數據連接

猜想多行添加到一個表中的代碼。 這裏是代碼:

    for (int i = 0; st1.Length > i; i++) 
        UpdateDataBase(st1[i]); 


private void UpdateDataBase(char letter) 
    { 
     int serialPro = 0; 
     string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + 
            "Data Source=C:\\Projects_2012\\Project_Noam\\Access\\myProject.accdb"; 
     try 
     { 
      using (OleDbConnection connection = new OleDbConnection(connectionString)) 
      { 
       string sql = "SELECT tblProInfo.proInfoSerialNum FROM tblProInfo "; 
       using (OleDbCommand command = new OleDbCommand(sql, connection)) 
       { 
        connection.Open(); 
        OleDbDataReader reader = command.ExecuteReader(); 
        //get the last! 
        while (reader.Read()) 
         serialPro = reader.GetInt32(0); 

       } 
       sql = "INSERT INTO tblOrderAA (orderAASerialPro, orderAACodon1) " 
        + " values (?, ?)"; 
       using (OleDbCommand command = new OleDbCommand(sql, connection)) 
       { 
        command.CommandType = CommandType.Text; 
        command.Parameters.AddWithValue("orderAASerialPro", serialPro); 
        command.Parameters.AddWithValue("orderAACodon1", letter); 
        command.ExecuteNonQuery(); 
       } 


      } 
     } 
     catch (Exception e) 
     { 
      MessageBox.Show("error in:" + e.Message); 
     } 
    } 

我知道我可以使用MAX來獲得最後一個。但它適用於不同的形式。所以我堅持要理解爲什麼! 謝謝大家的幫助。

回答

0

如果我不是把你當作沒關讀卡器所以要儘量添加它

while (reader.Read()) 
    serialPro = reader.GetInt32(0); 
reader.Close(); 

編輯

讓我說什麼(對於刪除未來袋)

connection靜態某處(例如在program.cs中,如果你要製作靜態類,會更好),然後用這種方式調用它

 if(Program.connection.State==System.Data.ConnectionState.Closed) 
      Program.connection.Open(); 
+0

但它停止調試之前,此行。看到這個問題。 – Noam650

+0

@ Noam650閱讀編輯部分 – Likurg

+0

我試過了,問我打開了一個連接。 – Noam650

0

最近我遇到了類似的問題。嘗試運行代碼連接打開和關閉與高架privelages

+0

我該怎麼做? – Noam650

+0

startInfo.Verb =「runas」;你可以解釋一下嗎? –

+0

? – Noam650