我无法想象我的生活。标题错误继续弹出,但我看不出问题所在:
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 :(得分:0)
表格中的FIRST_NAME
列可能会设为NOT NULL
。检查actionItem.FirstName
的值,确保这是NOT NULL
。
您应该调试代码以查看actionItem.FirstName
是否为NULL。
请注意,.Value为null的参数不会全部通过。 所以你需要这样做:
cmd.Parameters.Add("@param", OleDbType.VarChar).Value = object ?? DBNull.Value;
希望这有帮助!
答案 1 :(得分:0)
使用try catch块确切地知道问题所在 在insertactionitem方法的开始处设置调试点,然后按 F10 逐步移动
在文本框中使用插入查询值,然后尝试在访问
中运行查询答案 2 :(得分:0)
之前已经在stackoverflow中处理过类似的问题。你也可以从HERE看一下那个。
问题可能是参数名称在代码和存储过程/查询中不匹配。
同样,给出错误的字段设置为NOT NULL。
所以你也可以仔细检查拼写,以确保不是这种情况。
添加try-catch块也是捕捉确切错误的好主意。
作为最后一个建议,试试看看会发生什么:
cmd.Parameters.Add(new OleDbParameter("@firstName", actionItem.FirstName));
答案 3 :(得分:0)
我怀疑你的问题在于actionItem.BoardDate
。
我不确定它是什么类型,但如果由于某种原因它为空或无效,那么它可能会破坏接下来的参数。