有关C# sql 插入数据 null值处理问题

狂虎追影 2015-11-07 11:24:01
 public static object sqlNull(object str)
{
if (str == null || str.ToString().Length <= 0)
{
return DBNull.Value;
}
else
{
return str;
}
}

public static bool RunTrans(StringBuilder sql, List<GL_ACCVOUCH> List_Accvouch)
{
bool runflag = false;//判断折行文件是否执行成功
SqlCommand cmd =DbHelperSQL. Connection.CreateCommand();
SqlTransaction varTrans = DbHelperSQL.Connection.BeginTransaction();
cmd.Transaction = varTrans;
try
{
foreach (GL_ACCVOUCH model in List_Accvouch)
{

cmd.Parameters.AddWithValue("@ccheck", sqlNull(model.ccheck));
cmd.Parameters[0].IsNullable = true;
cmd.Parameters.AddWithValue("@cbook", sqlNull(model.cbook));
cmd.Parameters.AddWithValue("@ibook", sqlNull(model.ibook));
cmd.Parameters.AddWithValue("@ccashier", sqlNull(model.ccashier));
cmd.Parameters.AddWithValue("@iflag", sqlNull(model.iflag));
cmd.Parameters.AddWithValue("@ctext1", sqlNull(model.ctext1));
cmd.Parameters.AddWithValue("@ctext2", sqlNull(model.ctext2));
cmd.Parameters.AddWithValue("@cdigest", sqlNull(model.cdigest));
cmd.Parameters.AddWithValue("@ccode", sqlNull(model.ccode));
cmd.Parameters.AddWithValue("@cexch_name", sqlNull(model.cexch_name));
cmd.Parameters.AddWithValue("@iperiod", sqlNull(model.iperiod));
cmd.Parameters.AddWithValue("@md", sqlNull(model.md));
cmd.Parameters.AddWithValue("@mc", sqlNull(model.mc));
cmd.Parameters.AddWithValue("@md_f", sqlNull(model.md_f));
cmd.Parameters.AddWithValue("@mc_f", sqlNull(model.mc_f));
cmd.Parameters.AddWithValue("@nfrat", sqlNull(model.nfrat));
cmd.Parameters.AddWithValue("@nd_s", sqlNull(model.nd_s));
cmd.Parameters.AddWithValue("@nc_s", sqlNull(model.nc_s));
cmd.Parameters.AddWithValue("@csettle", sqlNull(model.csettle));
cmd.Parameters.AddWithValue("@cn_id", sqlNull(model.cn_id));
cmd.Parameters.AddWithValue("@dt_date", Common.DateToNull(sqlNull(model.dt_date)));
cmd.Parameters.AddWithValue("@csign", sqlNull(model.csign));
cmd.Parameters.AddWithValue("@cdept_id", sqlNull(model.cdept_id));
cmd.Parameters.AddWithValue("@cperson_id", sqlNull(model.cperson_id));
cmd.Parameters.AddWithValue("@ccus_id", sqlNull(model.ccus_id));
cmd.Parameters.AddWithValue("@csup_id", sqlNull(model.csup_id));
cmd.Parameters.AddWithValue("@citem_id", sqlNull(model.citem_id));
cmd.Parameters.AddWithValue("@citem_class", sqlNull(model.citem_class));
。。。。。。。。。。。。
cmd.CommandText = sql.ToString();
cmd.ExecuteNonQuery();
}
varTrans.Commit();
runflag = true;
}
catch (Exception ce)
{
varTrans.Rollback();
throw ce;
}
return runflag;
}

/// <summary>
/// 增加一条数据
/// </summary>
public bool Add_Accvouch(List<GL_ACCVOUCH> AccvouchList)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into GL_ACCVOUCH(");
strSql.Append("ccheck,cbook,ibook,ccashier,iflag,ctext1,ctext2,cdigest,ccode,cexch_name,iperiod,md,mc,md_f,mc_f,nfrat,nd_s,nc_s,csettle,cn_id,dt_date,csign,cdept_id,cperson_id,ccus_id,csup_id,citem_id,citem_class,cname,ccode_equal,iflagbank,iflagPerson,isignseq,bdelete,coutaccset,ioutyear,coutsysname,coutsysver,doutbilldate,ioutperiod,coutsign,coutno_id,doutdate,ino_id,coutbillsign,coutid,bvouchedit,bvouchAddordele,bvouchmoneyhold,bvalueedit,bcodeedit,ccodecontrol,bPCSedit,bDeptedit,inid,bItemedit,bCusSupInput,cDefine1,cDefine2,cDefine3,cDefine4,cDefine5,cDefine6,cDefine7,cDefine8,dbill_date,cDefine9,cDefine10,cDefine11,cDefine12,cDefine13,cDefine14,cDefine15,cDefine16,dReceive,cWLDZFlag,idoc,dWLDZTime,bFlagOut,iBG_OverFlag,cBG_Auditor,dBG_AuditTime,cBG_AuditOpinion,bWH_BgFlag,ssxznum,CErrReason,BG_AuditRemark,cbill,cBudgetBuffer,iBG_ControlResult,NCVouchID,daudit_date,RowGuid,cBankReconNo,cnotetypecode,cnoteno");
strSql.Append(") values (");
strSql.Append("@ccheck,@cbook,@ibook,@ccashier,@iflag,@ctext1,@ctext2,@cdigest,@ccode,@cexch_name,@iperiod,@md,@mc,@md_f,@mc_f,@nfrat,@nd_s,@nc_s,@csettle,@cn_id,@dt_date,@csign,@cdept_id,@cperson_id,@ccus_id,@csup_id,@citem_id,@citem_class,@cname,@ccode_equal,@iflagbank,@iflagPerson,@isignseq,@bdelete,@coutaccset,@ioutyear,@coutsysname,@coutsysver,@doutbilldate,@ioutperiod,@coutsign,@coutno_id,@doutdate,@ino_id,@coutbillsign,@coutid,@bvouchedit,@bvouchAddordele,@bvouchmoneyhold,@bvalueedit,@bcodeedit,@ccodecontrol,@bPCSedit,@bDeptedit,@inid,@bItemedit,@bCusSupInput,@cDefine1,@cDefine2,@cDefine3,@cDefine4,@cDefine5,@cDefine6,@cDefine7,@cDefine8,@dbill_date,@cDefine9,@cDefine10,@cDefine11,@cDefine12,@cDefine13,@cDefine14,@cDefine15,@cDefine16,@dReceive,@cWLDZFlag,@idoc,@dWLDZTime,@bFlagOut,@iBG_OverFlag,@cBG_Auditor,@dBG_AuditTime,@cBG_AuditOpinion,@bWH_BgFlag,@ssxznum,@CErrReason,@BG_AuditRemark,@cbill,@cBudgetBuffer,@iBG_ControlResult,@NCVouchID,@daudit_date,@RowGuid,@cBankReconNo,@cnotetypecode,@cnoteno");
strSql.Append(") ");

bool flag = RunTrans(strSql, AccvouchList);
return flag;

}





参数化参数化查询 '(@ccheck nvarchar(4000),@cbook nvarchar(4000),@ibook int,@ccashi' 需要参数 '@dt_date',但未提供该参数。查询 '(@ccheck nvarchar(4000),@cbook nvarchar(4000),@ibook int,@ccashi' 需要参数 '@dt_date',但未提供该参数。
...全文
348 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tcmakebest 2015-11-07
  • 打赏
  • 举报
回复
Common.DateToNull(sqlNull(model.dt_date)) 写错了顺序,调一下 sqlNull(Common.DateToNull(model.dt_date))
狂虎追影 2015-11-07
  • 打赏
  • 举报
回复
老是提示未赋值,前面的参数我默认没有输入 ,为 null。请教。。。。
masanaka 2015-11-07
  • 打赏
  • 举报
回复
应该是 Common.DateToNull把值转成了Null然后会爆这样的错误。 你已经sqlNull了,为什么还要在转换一次? 另外,还有2个地方 1. cmd.Parameters[0].IsNullable = true; 不知道这句的意义何在。 2. foreach开始或者最后的地方,你不clear下你的cmd.Parameters吗?
秋的红果实 2015-11-07
  • 打赏
  • 举报
回复
strSql.Append("ccheck,cbook,ibook,ccashier,iflag,ctext1,ctext2,cdigest,ccode,cexch_name,…… strSql.Append("@ccheck,@cbook,@ibook,@ccashier,@iflag,@ctext1…… 这两句里有参数@dt_date对应的项吗?仔细查查,可以把长代码复制到记事本检查 再检查下,Common.DateToNull(sqlNull(model.dt_date))输出的是不是一个有效的日期类型
狂虎追影 2015-11-07
  • 打赏
  • 举报
回复
没人回答吗?
思则出 2015-11-07
  • 打赏
  • 举报
回复
你直接输入一个固定的值试试,是不是转换的时候 报错了。能给分吗

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧