2016-06-16 4 views
0

일부 정보는 Access 데이터베이스에 전달하려고 시도하지만 ExecuteNonQuery()을 올바르게 사용하고 있는지 확실하지 않습니다. 다음은 내가 사용하고있는 코드입니다.OleDbConnection - 전달되는 모든 정보가 아닙니다.

public void WriteToDB(string connStr, string tblName) 
    { 
     string[] accounts = { "@ID", "@Date", "@Line Item", "@Ranking Item", "@Item Attribute", "@Current_Period_Ranking(b)" }; 

     OleDbConnection conn = new OleDbConnection(connStr); 
     conn.Open(); 
     OleDbCommand CmdSQL = new OleDbCommand(string.Format("Insert into [{0}] ([ID], [Date], [Line Item], [Ranking Item], [Ranking]) VALUES(?,?,?,?,?)",tblName),conn); 
     CmdSQL.Parameters.AddWithValue("@ID", 1); 
     CmdSQL.Parameters.AddWithValue("@Date", "6/20/2016"); 
     CmdSQL.Parameters.AddWithValue("@Line Item", this.ItemName); 
     CmdSQL.Parameters.AddWithValue("@Ranking Item", "Ranking"); 
     CmdSQL.Parameters.AddWithValue("@Ranking", this.Rank.GetLineItem(3)); 
     CmdSQL.ExecuteNonQuery(); 
     CmdSQL.Parameters.AddWithValue("@ID", 2); 
     CmdSQL.Parameters.AddWithValue("@Date", "6/20/2016"); 
     CmdSQL.Parameters.AddWithValue("@Line Item", this.ItemName); 
     CmdSQL.Parameters.AddWithValue("@Ranking Item", "Price"); 
     CmdSQL.Parameters.AddWithValue("@Ranking", this.Price); 
     CmdSQL.ExecuteNonQuery(); 
     CmdSQL.Parameters.AddWithValue("@ID", 3); 
     CmdSQL.Parameters.AddWithValue("@Date", "6/20/2016"); 
     CmdSQL.Parameters.AddWithValue("@Line Item", this.ItemName); 
     CmdSQL.Parameters.AddWithValue("@Ranking Item", "Pounds"); 
     CmdSQL.Parameters.AddWithValue("@Ranking", this.Pounds); 
     CmdSQL.ExecuteNonQuery(); 
     CmdSQL.Parameters.AddWithValue("@ID", 4); 
     CmdSQL.Parameters.AddWithValue("@Date", "6/20/2016"); 
     CmdSQL.Parameters.AddWithValue("@Line Item", this.ItemName); 
     CmdSQL.Parameters.AddWithValue("@Ranking Item", "Opportunity"); 
     CmdSQL.Parameters.AddWithValue("@Ranking", this.Opportunity); 
     CmdSQL.ExecuteNonQuery(); 
    } 

이 코드를 실행할 때 Access DB는 1을 표시합니다. 같은 명령을 사용하고 있기 때문에

답변

3

, 당신은 나중에 매개 변수를 취소해야 : 보조 노트에

CmdSQL.ExecuteNonQuery(); 
CmdSQL.Parameters.Clear(); 
CmdSQL.Parameters.AddWithValue("@ID", 4); 
.... 

이 날짜는 데이터베이스에 날짜, 문자열이 아니라해야합니다. 동일한 구조를 가진 테이블이 많은 경우 데이터베이스가 의심스러워 보입니다. 왜 단지 하나의 테이블과 어떤 유형의 행인지 구분하는 필드가 아닙니다. 그것은 당신의 질문을 쉽게 만들 것입니다. 또한 이러한 일회용 데이터베이스 객체를 블록을 사용하여 배치하는 것이 매우 일반적이며 유익합니다.

+0

또한 날짜에 : 그것은 내가 작성한 외부 DLL입니다. VBA와 통신 할 것이므로 날짜를 문자열로 전달한 다음 날짜로로드 할 것입니다. 아직 그 부분에 대한 legwork을하지 않았습니다. 이것은 부하가 작동하는지 확인하는 것입니다. 그래도 도와 ​​줘서 고마워! – jDave1984