【发布时间】:2014-09-04 16:12:51
【问题描述】:
我有这个代码:
var SQL ="SP_PROC";
SqlCommand cmd = new SqlCommand(SQL, connection)
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@dcd_first_name", name);
cmd ExecuteNonQuery();
为什么AddWithValue when is dcd_first_name SQL Server Profile 给了我默认值?并且当存储过程执行时,它会导致执行崩溃。
个人资料给我:EXEC SP_PROC default
我想当我在参数中传递一个空值时,在这种情况下,名称会自动将AddWithValue 转换为DBNull.Value。我必须指定它。
使用AddWithValue参数是不是最好的方法?
【问题讨论】:
-
没有在配置文件设置默认
-
刚刚注意到你没有做
cmd.CommandType = CommandType.StoredProcedure; -
我忘了在这里添加抱歉
-
您应该查看Can we stop using AddWithValue() already? 并停止使用
.AddWithValue()- 它可能会导致意想不到和令人惊讶的结果... -
旁注:您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀!