2012-10-07 43 views
0

嘿,大家好我使用C#和我已經成功地訪問我的數據庫,並賦值的變量等,但我想訪問它第二次,由於某種原因它的失敗在這一點上:第二次訪問數據庫訪問錯誤? C#

  OleDbDataReader reader = command.ExecuteReader(); 

這裏是代碼片段可能會幫助你們更好地理解。如果有人能指出我可能會做錯什麼,我會深表感激。

 //######################### 
     // DATABASE OPERATIONS 
     //######################### 

     // Create the database connections 
     string usersConnString = (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\kronix\Documents\theitguy.accdb"); 

     OleDbConnection theitguyDBConn = new OleDbConnection(usersConnString); 

     //============================== 
     // Populate Customers Table 
     //============================== 

     try 
     { 
      // Open theitguy database connection 
      theitguyDBConn.Open(); 

      // Select the fields you want to retrieve from in the database 
      string selectString = "SELECT ID, Name, Surname, Address, Town, County, Postcode, HomeNumber, MobileNumber, Email FROM Customers"; 

      OleDbCommand command = new OleDbCommand(selectString, theitguyDBConn); 

      //Send the CommandText to the connection, and then build an OleDbDataReader. 
      //Note: The OleDbDataReader is forward-only. 
      OleDbDataReader reader = command.ExecuteReader(); 

      // PROCESS THE DATABASE AND ADD THEM TO THE LISTS FOR USE LATER IN THE PROGRAM 
      while (reader.Read()) 
      { 
       custID.Add(reader["ID"].ToString()); 
       custName.Add(reader["Name"].ToString()); 
       custSurname.Add(reader["Surname"].ToString()); 
       custAddress.Add(reader["Address"].ToString()); 
       custTown.Add(reader["Town"].ToString()); 
       custCounty.Add(reader["County"].ToString()); 
       custPostcode.Add(reader["Postcode"].ToString()); 
       custHomeNumber.Add(reader["HomeNumber"].ToString()); 
       custMobileNumber.Add(reader["MobileNumber"].ToString()); 
       custEmail.Add(reader["Email"].ToString()); 
      } 

      // Dispose of the data once used 
      reader.Dispose(); 
      reader.Close(); 

      // Close the database connection 
      theitguyDBConn.Close(); 

     } 
     catch (Exception ex) 
     { 
      Console.Write("ERROR 201 (Form2): Error reading Customers table in theitguy Database\n"); 
     } 



     //============================== 
     // Populate Repairs Table 
     //============================== 

     try 
     { 
      // Open theitguy database connection 
      theitguyDBConn.Open(); 

      // Select the fields you want to retrieve from in the database 
      string selectString = "SELECT ID, CustID, Name, Surname, DateIn, Device, Colour, ContactNumber1, ContactNumber2, EstimatedCost, ReportedProblem, Diagnostics, EngineerRemarks, WorkCompleted, PartsUsed, PartsCost, PartsID, Engineer, TotalCost, DateCompleted FROM Repairs"; 

      OleDbCommand command = new OleDbCommand(selectString, theitguyDBConn); 

      //Send the CommandText to the connection, and then build an OleDbDataReader. 
      //Note: The OleDbDataReader is forward-only. 
      OleDbDataReader reader = command.ExecuteReader(); //###IT'S FAILING HERE!!!### 


      // PROCESS THE DATABASE AND ADD THEM TO THE LISTS FOR USE LATER IN THE PROGRAM 
      while (reader.Read()) 
      { 
       repID.Add(reader["ID"].ToString()); 
       repCustID.Add(reader["ID"].ToString()); 
       repName.Add(reader["ID"].ToString()); 
       repSurname.Add(reader["ID"].ToString()); 
       repDateIn.Add(reader["ID"].ToString()); 
       repDevice.Add(reader["ID"].ToString()); 
       repColour.Add(reader["ID"].ToString()); 
       repContactNumber1.Add(reader["ID"].ToString()); 
       repContactNumber2.Add(reader["ID"].ToString()); 
       repEstimatedCost.Add(reader["ID"].ToString()); 
       repReportedProblem.Add(reader["ID"].ToString()); 
       repDiagnostics.Add(reader["ID"].ToString()); 
       repEngineerRemarks.Add(reader["ID"].ToString()); 
       repWorkCompleted.Add(reader["ID"].ToString()); 
       repPartsUsed.Add(reader["ID"].ToString()); 
       repPartsCost.Add(reader["ID"].ToString()); 
       repPartsID.Add(reader["ID"].ToString()); 
       repEngineer.Add(reader["ID"].ToString()); 
       repTotalCost.Add(reader["ID"].ToString()); 
       repDateCompleted.Add(reader["ID"].ToString()); 
      } 

      // Dispose of the data once used 
      reader.Dispose(); 
      reader.Close(); 

      // Close the database connection 
      theitguyDBConn.Close(); 

     } 
     catch (Exception ex) 
     { 
      Console.Write("ERROR 202 (Form2): Error reading Repairs table in theitguy Database\n"); 
     } 
+1

什麼是錯誤和哪個代碼塊拋出錯誤? – codingbiz

+0

當您發現異常而不是打印某些文本時,爲什麼不打印錯誤消息。或者更好,ex.ToString()。這將會告訴你究竟是什麼以及問題出在哪裏。 –

回答

0

Whoopsie,我做了一個噓聲......我發現我的問題。

我忘了名字正確執行以下操作:

  repCustID.Add(reader["ID"].ToString()); 
      repName.Add(reader["ID"].ToString()); 
      repSurname.Add(reader["ID"].ToString()); 

應該

  repCustID.Add(reader["CustID"].ToString()); 
      repName.Add(reader["Name"].ToString()); 
      repSurname.Add(reader["Surname"].ToString()); 

愚蠢的我。

0

其實這並不是唯一的錯誤......真正的問題是我試圖將訪問中的貨幣類型轉換爲字符串。

+0

您可以編輯原始問題,而不是像這樣發佈「答案」。 –