我使用存储过程进行演示测试,以更新用户的数据。
这是我的存储过程代码:
Worksheets
类连接到SQL Server:
ALTER PROC sp_CapNhat
@maNV nvarchar(10),
@hoNV nvarchar(50),
@tenNV nvarchar(100),
@gioiTinh bit,
@diaChi nvarchar(150),
@tienLuong int
AS
BEGIN
UPDATE NhanVien
SET Ho = @hoNV,
Ten = @tenNV,
GioiTinh = @gioiTinh,
DiaChi = @diaChi,
TienLuong = @tienLuong
WHERE MaNV = @maNV
SELECT * FROM NhanVien
END
当我将参数从用户传递到更新时,我得到了一些错误转换变量:
无法将参数值从字符串转换为布尔值
@tienLuong int similar
这是我的代码将参数传递给ActionResult中的过程:
public static void LoadDataSet(ref DataSet ds, string procName, params object[] parameters)
{
SqlConnection con = new SqlConnection(connectionString);
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlDataAdapter da = new SqlDataAdapter(procName, con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlCommandBuilder.DeriveParameters(da.SelectCommand);
if (da.SelectCommand.Parameters.Count - 1 != parameters.Length)
{
return;
}
int i = 0;
foreach (SqlParameter pr in da.SelectCommand.Parameters)
{
if (pr.Direction == ParameterDirection.Input || pr.Direction == ParameterDirection.InputOutput)
{
pr.Value = parameters[i];
}
}
da.Fill(ds);
if (con.State == ConnectionState.Open)
{
con.Close();
}
}
有人可以帮我解决这个问题吗?请解释......
感谢。
答案 0 :(得分:0)
public static void LoadDataSet(ref DataSet ds, string name, params object[] parameters)
{
SqlConnection con = new SqlConnection(connectionString);
if (con.State == ConnectionState.Closed)
{
con.Open();
}
SqlDataAdapter da = new SqlDataAdapter(name, con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
SqlCommandBuilder.DeriveParameters(da.SelectCommand);
if (da.SelectCommand.Parameters.Count - 1 != parameters.Length)
{
return;
}
int i = 0;
foreach (SqlParameter pr in da.SelectCommand.Parameters)
{
if (pr.Direction == ParameterDirection.Input || pr.Direction == ParameterDirection.InputOutput)
{
pr.Value = parameters[i];
i++;
}
}
da.Fill(ds);
if (con.State == ConnectionState.Open)
{
con.Close();
}
}
在上面的代码中添加了i ++。
从你的行动中调用函数
var dataset = new DataSet();
var args = new object[] { "Hello", "World", 123, true, "ddd", 1 };
CommonHelper.LoadDataSet(ref dataset, "sp_CapNhat", args);