2014-03-07 2 views
0

나는 내 삶에 대해이 사실을 알 수 없습니다. 제목이 표시된 오류가 계속 나타나지만 문제가있는 곳을 볼 수 없습니다.매개 변수 @firstName에는 기본값이 없습니다.

class Repository 
{ 
    private OleDbConnection getConnection() 
    { 
     return new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\tb2\Users\tburmeister\Documents\Access Databases\Staff_Actions.accdb;Jet OLEDB:Database Password=ECDistrict;"); 
    } 
    public List<ActionItem> getActionItemList() 
    { 
     return null; 
    } 

    public void insertActionItem(ActionItem actionItem) 
    { 
     OleDbConnection con = getConnection(); 

     OleDbCommand cmd = new OleDbCommand("Insert into [Actions] ([RECORD_ENTERED_DATE], [BOARD_DATE],[FIRST_NAME],[LAST_NAME],[ADDRESS],[PO_BOX],[CITY],[STATE],[ZIP],[EMP_PHONE],[LOCAL_YEARS],[OUTSIDE_YEARS],[TOTAL_YEARS],[EMP_HISTORY],[GROUP_TYPE],[TERM_TYPE],[TOTAL_FTE],[POSITION],[LOCATION],[POSITION_PCT],[SALARY],[DATE_OF_ACTION],[ACTION],[FUNDING],[REASON]) Values(@recordEnteredDate, @boardDate, @firstName, @lastName, @Addy, @poBox, @city, @state, @zip, @employeePhone, @localYears, @outsideYears,@totalYears, @employeeHistory, @groupType, @termType, @totalFTE, @position, @location, @positionPercentage, @salary, @dateOfAction, @action, @funding, @reason)", con); 
     cmd.Parameters.Add("@recordEnteredDate", OleDbType.Date).Value = actionItem.RecordEnterdDate; 
     cmd.Parameters.Add("@boardDate", OleDbType.Date).Value = actionItem.BoardDate; 
     cmd.Parameters.Add("@firstName", OleDbType.VarChar).Value = actionItem.FirstName; 
     cmd.Parameters.Add("@lastname", OleDbType.VarChar).Value = actionItem.LastName; 
     cmd.Parameters.Add("@Addy", OleDbType.VarChar).Value = actionItem.Address; 
     cmd.Parameters.Add("@poBox", OleDbType.VarChar).Value = actionItem.PoBox; 
     cmd.Parameters.Add("@city", OleDbType.VarChar).Value = actionItem.City; 
     cmd.Parameters.Add("@state", OleDbType.VarChar).Value = actionItem.State; 
     cmd.Parameters.Add("@zip", OleDbType.Integer).Value = Convert.ToInt32(actionItem.Zip); 
     cmd.Parameters.Add("@employeePhone", OleDbType.Integer).Value = Convert.ToInt32(actionItem.EmpPhone); 
     cmd.Parameters.Add("@localYears", OleDbType.Integer).Value = Convert.ToInt32(actionItem.LocalYears); 
     cmd.Parameters.Add("@outsideYears", OleDbType.Integer).Value = Convert.ToInt32(actionItem.OutsideYears); 
     cmd.Parameters.Add("@totalYears", OleDbType.Integer).Value = Convert.ToInt32(actionItem.TotalYears); 
     cmd.Parameters.Add("@employeeHistory", OleDbType.VarChar).Value = actionItem.EmployeeHistory; 
     cmd.Parameters.Add("@groupType", OleDbType.VarChar).Value = actionItem.GroupType; 
     cmd.Parameters.Add("@termType", OleDbType.VarChar).Value = actionItem.TermType; 
     cmd.Parameters.Add("@totalFTE", OleDbType.VarChar).Value = actionItem.TotalFTE; 
     cmd.Parameters.Add("@position", OleDbType.VarChar).Value = actionItem.Position; 
     cmd.Parameters.Add("@location", OleDbType.VarChar).Value = actionItem.Location; 
     cmd.Parameters.Add("@positionPercentage", OleDbType.VarChar).Value = actionItem.PositionPCT; 
     cmd.Parameters.Add("@salary", OleDbType.VarChar).Value = actionItem.Salary; 
     cmd.Parameters.Add("@dateOfAction", OleDbType.VarChar).Value = actionItem.DateOfAction; 
     cmd.Parameters.Add("@action", OleDbType.VarChar).Value = actionItem.Action; 
     cmd.Parameters.Add("@funding", OleDbType.VarChar).Value = actionItem.Funding; 
     cmd.Parameters.Add("@reason", OleDbType.VarChar).Value = actionItem.Reason; 
     try 
     { 
      con.Open(); 

      cmd.ExecuteNonQuery(); 
      con.Close(); 
     } 
     catch (OleDbException ex) 
     { 
      con.Close(); 
      Console.WriteLine(ex.Message); 
     } 
    } 
} 

누군가가이 문제에 대해 밝히지 않았습니까?

답변

0

테이블의 FIRST_NAME 열이 NOT NULL 일 수 있습니다. actionItem.FirstName의 값을 확인하고 NOT NULL인지 확인하십시오.

actionItem.FirstName이 NULL이 아닌지 확인하려면 코드를 디버깅해야합니다.

그리고 .Value가 null 인 매개 변수는 모두로 통과하지 않습니다. 이렇게해야합니다.

cmd.Parameters.Add("@param", OleDbType.VarChar).Value = object ?? DBNull.Value; 

희망이 있습니다. 문제가 가 insertactionitem 방법의 시작에 디버그 포인트를 넣어 거짓말을 정확히 알고 F10를 눌러

0

사용 시도의 catch 블록은 텍스트 상자에 삽입 쿼리 값을 사용 단계

에 의해 단계를 이동합니다 그런 다음 액세스에서 쿼리를 실행 해보십시오.

0

유사한 문제가 이전에 stackoverflow에서 처리되었습니다. 너는 HERE에서 저것을 볼 수있다.

매개 변수의 이름이 코드와 저장 프로 시저/쿼리에서 일치하지 않을 수 있습니다.

또한 오류를 제공하는 필드는 NOT NULL로 설정됩니다.

그래서 맞춤법 검사를 다시 한 번 확인해보세요.

try-catch 블록을 추가하면 정확한 오류를 포착하는 것이 좋습니다.

그리고 마지막 제안으로

이 시도하고 어떻게되는지 :

cmd.Parameters.Add(new OleDbParameter("@firstName", actionItem.FirstName)); 
0

나는 당신의 문제가 actionItem.BoardDate에게있다 생각합니다.

어떤 유형인지는 확실치 않지만 어떤 이유로 인해 null이거나 유효하지 않은 경우 다음에 오는 매개 변수가 엉망이 될 수 있습니다.

관련 문제