int _ItemHisId = info.ItemHisId;
string _FeDesc = info.FeDesc;
string _FeName = info.FeName;
int _SaveStyle = info.SaveStyle;
int _OutSave = info.OutSave;
string _Para = info.Para;
string _ParaName = info.ParaName;string sql = "INSERT INTO Feature VALUES(@_ItemHisId,@_FeDesc,@_FeName,@_SaveStyle,@_OutSave,@_Para,@_ParaName)";
int rst = DBManager.ExecuteUpdate(sql, new object[] {_ItemHisId, _FeDesc, _FeName, _SaveStyle, _OutSave,_Para, _ParaName });
if(rst>0)
{
return true;
}
else
{
return false;
}
//被调用的方法
public static int ExecuteUpdate(string sqlStr,params object[] param)
{
int rows = 0; try
{
SqlCommand cmd = new SqlCommand(sqlStr, Conn);
cmd.Parameters.AddRange(param);
cmd.Connection.Open(); try
{
rows = cmd.ExecuteNonQuery();
}
catch (Exception)
{
throw;
}
finally
{
cmd.Connection.Close();
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
return rows;
}
是不是我调用的形式出了问题
string _FeDesc = info.FeDesc;
string _FeName = info.FeName;
int _SaveStyle = info.SaveStyle;
int _OutSave = info.OutSave;
string _Para = info.Para;
string _ParaName = info.ParaName;string sql = "INSERT INTO Feature VALUES(@_ItemHisId,@_FeDesc,@_FeName,@_SaveStyle,@_OutSave,@_Para,@_ParaName)";
int rst = DBManager.ExecuteUpdate(sql, new object[] {_ItemHisId, _FeDesc, _FeName, _SaveStyle, _OutSave,_Para, _ParaName });
if(rst>0)
{
return true;
}
else
{
return false;
}
//被调用的方法
public static int ExecuteUpdate(string sqlStr,params object[] param)
{
int rows = 0; try
{
SqlCommand cmd = new SqlCommand(sqlStr, Conn);
cmd.Parameters.AddRange(param);
cmd.Connection.Open(); try
{
rows = cmd.ExecuteNonQuery();
}
catch (Exception)
{
throw;
}
finally
{
cmd.Connection.Close();
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
return rows;
}
是不是我调用的形式出了问题
SqlParameterCollection 只接受非空的SqlParameter类型对象,不接受Int32对象
错误,没见过这么没有逻辑的三层调用
你的三层是怎么架构的呢?我一般这样写:
public static int getBookIdByName(string bookName)
{
string cmdtxt = "select bookId from BS_bookInfo where bookName=@bookName";
int bookId = 0;
SqlParameter[] cmdparas = new SqlParameter[1];
cmdparas[0] = new SqlParameter("@bookName", SqlDbType.VarChar);
cmdparas[0].Value = bookName;
SqlDataReader sdr = SqlHelper.ExecuteReader(CommandType.Text, cmdtxt, cmdparas);
if (sdr.Read())
{
bookId = Convert.ToInt32(sdr["bookId"]); }
return bookId;
}
int rst = DBManager.ExecuteUpdate(sql, new object[] {_ItemHisId, _FeDesc, _FeName, _SaveStyle, _OutSave,_Para, _ParaName });
这样调用出错