私は、ストアドプロシージャを使用してユーザーからのデータを更新するデモテストを行っています。ASP.NET MVC 5のストアドプロシージャを使用した更新
:私はいくつかのエラーを取得するキャスト変数更新する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(); } }
を、私は、ユーザーからのパラメータを渡すとき: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型と同様の
はのActionResultにプロシージャにパラメータを渡す私のコードです:
public ActionResult CapNhat(NhanVien obj)
{
return View("Index", Common.LoadDataTable("sp_CapNhat", obj.maNV, obj.hoNV, obj.tenNV, obj.gioiTinh, obj.diaChi, obj.tienLuong));
}
誰が私はこの問題を解決する手助けすることはできますか?説明してください...
ありがとうございました。
サイドノート:あなたは** **あなたのストアドプロシージャのための 'sp_'接頭辞を使用しないでください。マイクロソフトは、[*ストアドプロシージャの名前付け*を参照してください](http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx)、およびあなたはいつか名前衝突のリスクを将来実行します。 [ストアドプロシージャのパフォーマンスにも悪い](http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix)単に 'sp_'を避け、他の何かを接頭辞として使うのが最善です。 –
'obj.gioiTinh'ブール型ですか? –