C#调用MySQL存储过程更新多列遇格式异常求助
会员记录更新功能异常排查
捕获的错误信息
'SAFE PMA Members.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.22\System.Diagnostics.StackTrace.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'SAFE PMA Members.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.22\System.Reflection.Metadata.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'SAFE PMA Members.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.22\System.Collections.Immutable.dll'. Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. Exception thrown: 'System.FormatException' in System.Private.CoreLib.dll
存储过程(MySQL Workbench中输入参数可正常执行)
DELIMITER // CREATE PROCEDURE updates_member(IN p_id INT, IN p_firstName VARCHAR(30), IN p_lastName VARCHAR(30), IN p_phoneNumber VARCHAR(15), IN p_email VARCHAR(100), IN p_streetAddress VARCHAR(100), IN p_city VARCHAR(30), IN p_state VARCHAR(20), IN p_zipCode INT(1), IN p_balance int(1), IN p_lastBalUpdate date) BEGIN UPDATE members SET firstName = p_firstName, lastName = p_lastName, phoneNumber = p_phoneNumber, email = p_email, streetAddress = p_streetAddress, city = p_city, state = p_state, zipCode = p_zipCode, balance = p_balance, lastBalUpdate = p_lastBalUpdate WHERE id = p_id; END // DELIMITER ;;
C#调用代码
public string MemberUpdate(Member input) { using var connection = new MySqlConnection (Helper.connVal("members")); string calling = "updates_member"; string Msg = ""; MySqlCommand cmd = new MySqlCommand(calling, connection); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@p_id", MySqlDbType.Int32).Value = input.id; cmd.Parameters.Add("@p_firstName", MySqlDbType.VarString).Value = input.FirstName; cmd.Parameters.Add("@p_lastName", MySqlDbType.VarString).Value = input.LastName; cmd.Parameters.Add("@p_phoneNumber", MySqlDbType.VarString).Value = input.PhoneNumber; cmd.Parameters.Add("@p_email", MySqlDbType.VarString).Value = input.Email; cmd.Parameters.Add("@p_streetAddress", MySqlDbType.VarString).Value = input.StreetAddress; cmd.Parameters.Add("@p_city", MySqlDbType.VarString).Value = input.City; cmd.Parameters.Add("@p_state", MySqlDbType.VarString).Value = input.State; cmd.Parameters.Add("@p_zipCode", MySqlDbType.Int32).Value = input.ZipCode; cmd.Parameters.Add("@p_balance", MySqlDbType.Int32).Value = input.CurrentBalance; cmd.Parameters.Add("@p_LastBalUpdate", MySqlDbType.Date).Value = input.LastBalUpdate; try { connection.Open(); cmd.ExecuteNonQuery(); connection.Close(); Msg = "Successfully updated."; } catch { Msg = "Error while updating"; } return Msg; }
问题详情
- 基于WinForms开发作品集项目的会员记录更新功能
- 远程MySQL服务器已将运行电脑IP加入白名单
- 存储过程在MySQL Workbench中可正常执行,且已通过存储过程实现数据查询功能,但更新功能异常
- 程序持续返回
Error while updating提示,无法定位具体原因 - 作为C#新手,需要解决该问题并了解如何查看详细错误日志
内容的提问来源于stack exchange,提问作者Jacob Cannon
相关产品推荐
相关产品推荐

