相当老火的基础问题,大伙帮忙找下错误

周睿 2010-03-04 03:13:11

public bool Update(product model)
{
Hashtable htSyn = Hashtable.Synchronized(new Hashtable());
StringBuilder strSql = new StringBuilder();
strSql.Append("update product set ");
strSql.Append("productName=@productName,");
strSql.Append("Price=@Price,");
strSql.Append("pInfo=@pInfo,");
strSql.Append("pClassId=@pClassId,");
strSql.Append("pTitle=@pTitle,");
strSql.Append("pKey=@pKey,");
strSql.Append("pDescription=@pDescription,");
strSql.Append("pButtom=@pButtom,");
strSql.Append("isCan=@isCan,");
strSql.Append("isBast=@isBast,");
strSql.Append("IsNew=@IsNew,");
strSql.Append("isIndex=@isIndex,");
strSql.Append("pDate=@pDate,");
strSql.Append("eDate=@eDate,");
strSql.Append("pSourse=@pSourse,");
strSql.Append("ptag=@ptag,");
strSql.Append("pSort=@pSort,");
strSql.Append("Views=@Views");
strSql.Append(" where productId=@productId ");
htSyn.Add("@productName", model.productName);
htSyn.Add("@Price", model.Price);
htSyn.Add("@pInfo", model.pInfo);
htSyn.Add("@pClassId", model.pClassId);
htSyn.Add("@pTitle", model.pTitle);
htSyn.Add("@pKey", model.pKey);
htSyn.Add("@pDescription", model.pDescription);
htSyn.Add("@pButtom", model.pButtom);
htSyn.Add("@isCan", model.isCan);
htSyn.Add("@isBast", model.isBast);
htSyn.Add("@IsNew", model.IsNew);
htSyn.Add("@isIndex", model.isIndex);
htSyn.Add("@pDate", model.pDate);
htSyn.Add("@eDate", model.eDate);
htSyn.Add("@pSourse", model.pSourse);
htSyn.Add("@ptag", model.ptag);
htSyn.Add("@pSort", model.pSort);
htSyn.Add("@Views", model.Views);
htSyn.Add("@productId", model.productId);
if (db.ExecuteNonQuery(strSql.ToString(),htSyn) > 0)
{
return true;
}
return false;
}

这是修改产品的一个方法
调用的是
ExecuteNonQuery里面的方法如下
using (SqlConnection conn = new SqlConnection(GetConnString()))
{
conn.Open();
SqlTransaction trans = conn.BeginTransaction();
try
{
SqlParameter[] param = new SqlParameter[ht.Count];
int i = 0;
foreach (DictionaryEntry objDE in ht)
{
param[i] = new SqlParameter(objDE.Key.ToString(), null);
param[i++].Value = objDE.Value;
}
SqlCommand comm = new SqlCommand(commandText, conn);
comm.Transaction = trans;
comm.Parameters.AddRange(param);
int val = comm.ExecuteNonQuery();
trans.Commit();
return val;
}
catch
{
trans.Rollback();
throw;
}

}

现在报
被准备语句 '(@pDescription nvarchar(4000),@pTitle nvarchar(4000),@pDate date' 需要参数 @pDescription,但未提供该参数
这里我修改的时候,如果有一处留有NULL就会报上面的错误,数据库字段全部是可以为空,这是为什么啊,想不明白原因,
请帮忙
...全文
374 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
周睿 2010-03-05
  • 打赏
  • 举报
回复
还有没有人说一下,为什么sqlhelper没有问题,它是怎么处理的?
周睿 2010-03-05
  • 打赏
  • 举报
回复
引用 24 楼 slimboy123 的回复:
你的ExecuteNonQuery方法有问题

说到点子上了,对是有问题,
周睿 2010-03-05
  • 打赏
  • 举报
回复
问题已经搞定,分全部给你了mail_ylei
slimboy123 2010-03-05
  • 打赏
  • 举报
回复
param[i++].Value = objDE.Value;
slimboy123 2010-03-05
  • 打赏
  • 举报
回复
你的ExecuteNonQuery方法有问题
周睿 2010-03-05
  • 打赏
  • 举报
回复
是的,就是这个问题,但为什么SQLhelper可以指教传NULL进去呢
fangyuantdy 2010-03-05
  • 打赏
  • 举报
回复
顶上楼,为空不能不传,而要传DBNull.Value
周睿 2010-03-05
  • 打赏
  • 举报
回复
引用 20 楼 mail_ylei 的回复:
C# codeif(model.pDescription==null|| model.pDescription=="" )
htSyn.Add("@pDescription", DBNull.Value);else
htSyn.Add("@pDescription", model.pDescription);

我试试看,但我要问下为什么用SQLhelper没有任何问题
mail_ylei 2010-03-05
  • 打赏
  • 举报
回复

if(model.pDescription==null || model.pDescription=="" )
htSyn.Add("@pDescription", DBNull.Value);
else
htSyn.Add("@pDescription", model.pDescription);


周睿 2010-03-05
  • 打赏
  • 举报
回复
还有尽量不要问我,数据库字段能不能为空,SQL语句会不会写错了,之类的问题,我已经找了2天了,如果是这些问题,
是头猪用的着找2天,所有我希望大家,看清楚我的问题,
周睿 2010-03-05
  • 打赏
  • 举报
回复
再次重申SQL语句没有问题,不要让我设置断点,我作为一个名初级的程序员,如果这还要人教的话,是不是我太白痴了
kytmu001 2010-03-05
  • 打赏
  • 举报
回复
设置断点,查看一下最后的sqlstring
周睿 2010-03-05
  • 打赏
  • 举报
回复
引用 15 楼 rememberhai 的回复:
数据表里允许字段为空吗?

字段都可以为空,SQL语句没有问题,ExecuteNonQuery这个里面的问题
rememberhai 2010-03-05
  • 打赏
  • 举报
回复
数据表里允许字段为空吗?
rememberhai 2010-03-05
  • 打赏
  • 举报
回复
能把断点调试的sql语句贴出来吗?添加数据是将为null的数据用某个特殊符号代替。呵呵这样就不会又null了
jianshao810 2010-03-05
  • 打赏
  • 举报
回复
应该看看那语句 是什么样子。。。。
小鹏 2010-03-04
  • 打赏
  • 举报
回复
不太懂你的意思,帮顶!
周睿 2010-03-04
  • 打赏
  • 举报
回复
引用 11 楼 foren_whb 的回复:
StringBuilder的问题。。。。
我一般不用这种不可控的代码。。。。

不是它的问题,我换成String也是一样的错误
丰云 2010-03-04
  • 打赏
  • 举报
回复
StringBuilder的问题。。。。
我一般不用这种不可控的代码。。。。
周睿 2010-03-04
  • 打赏
  • 举报
回复
第一段代码没有错误,也不是SQL语句问题,问题在第二段代码那,但具体哪有问题,不清楚
加载更多回复(9)

62,040

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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