BLL.dll 中发生了 'System.ArgumentException' 类型的未处理异常
An unhandled exception of type 'System.ArgumentException' occurred in BLL.dll
所以我有一个 3 层应用程序,使用 SQL 连接和存储过程添加到数据库中的 table。我在我的数据访问层中设置了如下存储过程...
public bool CreateAccount(AccountModel newAccount)
{
bool retValue = false;
try
{
using (SqlConnection cxn = new SqlConnection(cxnString))
{
SqlCommand cmd = new SqlCommand("spAddAccount", cxn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter FirstNameParam = new SqlParameter("@FirstName", SqlDbType.NVarChar, 256);
FirstNameParam.Value = newAccount.FirstName;
SqlParameter SurnameParam = new SqlParameter("@Surname", SqlDbType.NVarChar, 256);
SurnameParam.Value = newAccount.Surname;
SqlParameter EmailParam = new SqlParameter("@Email", SqlDbType.NVarChar, 256);
EmailParam.Value = newAccount.Email;
SqlParameter PhoneParam = new SqlParameter("@Phone", SqlDbType.NVarChar, 256);
PhoneParam.Value = newAccount.Phone;
SqlParameter Address1Param = new SqlParameter("@Address2", SqlDbType.NVarChar, 256);
Address1Param.Value = newAccount.Address1;
SqlParameter Address2Param = new SqlParameter("@Address2", SqlDbType.NVarChar, 256);
Address2Param.Value = newAccount.Address2;
SqlParameter CityParam = new SqlParameter("@City", SqlDbType.NVarChar, 256);
CityParam.Value = newAccount.City;
SqlParameter CountyParam = new SqlParameter("@County", SqlDbType.NVarChar, 256);
CountyParam.Value = newAccount.County;
SqlParameter AccountTypeParam = new SqlParameter("@AccountType", SqlDbType.NVarChar, 256);
AccountTypeParam.Value = newAccount.AccountType;
SqlParameter InitialBalanceParam = new SqlParameter("@InitialBalance", SqlDbType.NVarChar, 256);
InitialBalanceParam.Value = newAccount.InitialBalance;
SqlParameter OverdraftLimitParam = new SqlParameter("@OverdraftLimit", SqlDbType.NVarChar, 256);
OverdraftLimitParam.Value = newAccount.OverdraftLimit;
SqlParameter AccountNumberParam = new SqlParameter("AccountNumber", SqlDbType.Int, 4);
AccountNumberParam.Direction = ParameterDirection.Output;
cmd.Parameters.Add(FirstNameParam);
cmd.Parameters.Add(SurnameParam);
cmd.Parameters.Add(EmailParam);
cmd.Parameters.Add(PhoneParam);
cmd.Parameters.Add(Address1Param);
cmd.Parameters.Add(Address2Param);
cmd.Parameters.Add(CityParam);
cmd.Parameters.Add(CountyParam);
cmd.Parameters.Add(AccountNumberParam);
cmd.Parameters.Add(InitialBalanceParam);
cmd.Parameters.Add(OverdraftLimitParam);
cmd.Parameters.Add(AccountNumberParam);
cxn.Open();
cmd.ExecuteNonQuery();
cxn.Close();
}
}
catch (Exception)
{
throw;
}
return retValue;
}
}
但是当 运行 程序引用我的逻辑层时,我得到了这个错误。
`
我试过在执行查询前后都使用 cmd.Parameters.Clear()
方法,但没有用。
还没有设置其他连接或 SQL 命令,这是唯一的一个。
我自己也想不通,又回到网上搜索。
谢谢
这是启动异常的地方,在业务逻辑层...
namespace BLL
{
public class bllAccountManager
{
public bool CreateAccount(AccountModel newAccount)
{
bool retValue = false;
dalAccountManager dal = new dalAccountManager();
try
{
retValue = dal.CreateAccount(newAccount);
}
catch (Exception ex)
{
throw;
}
return retValue;
}
}
}
AccountNumberParam 参数已添加两次。异常有点不言自明,只需找到罪魁祸首。
所以我有一个 3 层应用程序,使用 SQL 连接和存储过程添加到数据库中的 table。我在我的数据访问层中设置了如下存储过程...
public bool CreateAccount(AccountModel newAccount)
{
bool retValue = false;
try
{
using (SqlConnection cxn = new SqlConnection(cxnString))
{
SqlCommand cmd = new SqlCommand("spAddAccount", cxn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter FirstNameParam = new SqlParameter("@FirstName", SqlDbType.NVarChar, 256);
FirstNameParam.Value = newAccount.FirstName;
SqlParameter SurnameParam = new SqlParameter("@Surname", SqlDbType.NVarChar, 256);
SurnameParam.Value = newAccount.Surname;
SqlParameter EmailParam = new SqlParameter("@Email", SqlDbType.NVarChar, 256);
EmailParam.Value = newAccount.Email;
SqlParameter PhoneParam = new SqlParameter("@Phone", SqlDbType.NVarChar, 256);
PhoneParam.Value = newAccount.Phone;
SqlParameter Address1Param = new SqlParameter("@Address2", SqlDbType.NVarChar, 256);
Address1Param.Value = newAccount.Address1;
SqlParameter Address2Param = new SqlParameter("@Address2", SqlDbType.NVarChar, 256);
Address2Param.Value = newAccount.Address2;
SqlParameter CityParam = new SqlParameter("@City", SqlDbType.NVarChar, 256);
CityParam.Value = newAccount.City;
SqlParameter CountyParam = new SqlParameter("@County", SqlDbType.NVarChar, 256);
CountyParam.Value = newAccount.County;
SqlParameter AccountTypeParam = new SqlParameter("@AccountType", SqlDbType.NVarChar, 256);
AccountTypeParam.Value = newAccount.AccountType;
SqlParameter InitialBalanceParam = new SqlParameter("@InitialBalance", SqlDbType.NVarChar, 256);
InitialBalanceParam.Value = newAccount.InitialBalance;
SqlParameter OverdraftLimitParam = new SqlParameter("@OverdraftLimit", SqlDbType.NVarChar, 256);
OverdraftLimitParam.Value = newAccount.OverdraftLimit;
SqlParameter AccountNumberParam = new SqlParameter("AccountNumber", SqlDbType.Int, 4);
AccountNumberParam.Direction = ParameterDirection.Output;
cmd.Parameters.Add(FirstNameParam);
cmd.Parameters.Add(SurnameParam);
cmd.Parameters.Add(EmailParam);
cmd.Parameters.Add(PhoneParam);
cmd.Parameters.Add(Address1Param);
cmd.Parameters.Add(Address2Param);
cmd.Parameters.Add(CityParam);
cmd.Parameters.Add(CountyParam);
cmd.Parameters.Add(AccountNumberParam);
cmd.Parameters.Add(InitialBalanceParam);
cmd.Parameters.Add(OverdraftLimitParam);
cmd.Parameters.Add(AccountNumberParam);
cxn.Open();
cmd.ExecuteNonQuery();
cxn.Close();
}
}
catch (Exception)
{
throw;
}
return retValue;
}
}
但是当 运行 程序引用我的逻辑层时,我得到了这个错误。
我试过在执行查询前后都使用 cmd.Parameters.Clear()
方法,但没有用。
还没有设置其他连接或 SQL 命令,这是唯一的一个。
我自己也想不通,又回到网上搜索。
谢谢
这是启动异常的地方,在业务逻辑层...
namespace BLL
{
public class bllAccountManager
{
public bool CreateAccount(AccountModel newAccount)
{
bool retValue = false;
dalAccountManager dal = new dalAccountManager();
try
{
retValue = dal.CreateAccount(newAccount);
}
catch (Exception ex)
{
throw;
}
return retValue;
}
}
}
AccountNumberParam 参数已添加两次。异常有点不言自明,只需找到罪魁祸首。