Nea*_*alR 15 c# null sqlparameter
我在C#类方法中使用了许多可选的输入参数.由于可选语法在未使用参数时会创建值"0",因此我在方法中调用的SQL插入命令将逐渐插入.但是,我需要命令在不使用参数时插入NULL值而不是0.在不使用大量"if"语句的情况下实现此目的的最佳方法是什么?
以下是我所指的代码.是否有某种语法/命令允许我在SqlParameter声明中指定NULL值?
public int batchInsert
(
int id,
int outcome,
int input = 0,
int add = 0,
int update = 0,
int delete = 0,
int errors = 0,
int warnings = 0
)
{
string sts;
if (outcome == 0)
{
sts = "S";
}
else if (outcome == 1)
{
sts = "W";
}
else
{
sts = "E";
}
SqlConnection sqlConn = new SqlConnection(this.connString);
SqlParameter runId = new SqlParameter("@runId", id);
SqlParameter endTime = new SqlParameter("@endTime", DateTime.Now);
SqlParameter status = new SqlParameter("@status", sts);
SqlParameter sqlInput = new SqlParameter("@itemsRead", input);
SqlParameter sqlAdd = new SqlParameter("@add", add);
SqlParameter sqlUpdate = new SqlParameter("@update", update);
SqlParameter sqlDelete = new SqlParameter("@delete", delete);
SqlParameter sqlError = new SqlParameter("@errors", errors);
SqlParameter sqlWarning = new SqlParameter("@warnings", warnings);
SqlParameter result = new SqlParameter("@outcome", results[outcome]);
SqlCommand sqlComm = new SqlCommand(insertCommand(), sqlConn);
Run Code Online (Sandbox Code Playgroud)
Eri*_*lje 35
是的,对于参数的值,只需使用DBNull.Value.例如:
SqlParameter sqlError =
new SqlParameter("@errors", errors == 0 ? (object)DBNull.Value : errors);
Run Code Online (Sandbox Code Playgroud)
或写一个小帮手:
private object ValueOrDBNullIfZero(int val) {
if ( val == 0 ) return DBNull.Value;
return val;
}
Run Code Online (Sandbox Code Playgroud)
然后:
SqlParameter sqlError =
new SqlParameter("@errors", ValueOrDBNullIfZero(errors));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39325 次 |
| 最近记录: |