asp.net保存时组装xml保存到数据库

好奇都是要学的 2010-11-17 11:26:48
我现在写一个保存功能.保存事件里写
 
string strParaXml = "<CitedWater ID='" + strID + "' AllSupply='" + TBXAllSupply.Text + "' ></CitedWater>";
strParaXml = "<root>" + strParaXml + "</root>";

SQL 存储过程里解析XML 到表里
exec sp_xml_preparedocument @intDoc OUTPUT, @chrXML
select * into ##SaleD
from openxml (@intDoc, '/root/CitedWater',1)
with (ID nvarchar(50),[Year] bigint,AllSupply numeric(18, 2))
问题出来了 TBXAllSupply.Text 有可能为空 这样就会出现varchar转换numeric出错

我想问 能不能判断TBXAllSupply.Text 值为空时传 null 进去,这样就不会出现错误了

PS: 我试过把TBXAllSupply.Text该成null 或者 dbnull.values 到XML里都识别为'null'或'' 而不是真正的null 保存时还会出现类型转换出错

谁做过相似的,告诉下, 要不然我只能去SQL里面写函数 然后挨个判断了. 我想把这个扔到代码里处理
...全文
130 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
呵呵, 那我得写多少判断啊。 还不如扔SQL里面那
jol_boy 2010-11-18
  • 打赏
  • 举报
回复
字符串中夹杂null类型的值肯定是不行的,区别对待吧!为空时不插该值
孟子E章 2010-11-18
  • 打赏
  • 举报
回复
xml就是字符串,字符串里面没有null的
你看这样可行不
if(TBXAllSupply.Text == "")
string strParaXml = "<CitedWater ID='" + strID + "'></CitedWater>";
strParaXml = "<root>" + strParaXml + "</root>";

  • 打赏
  • 举报
回复
我考虑过存储过程, 我还写了个字定义函数. 用来返回是不是null但是我觉得麻烦.
如果能写到代码里就好了
liuwei2500 2010-11-17
  • 打赏
  • 举报
回复
哪怕你就是传一个长度为0的字符串进去,你在里面判断一下,将这个值改变为一个可以转换成numeric的有效值。再进行写入。
liuwei2500 2010-11-17
  • 打赏
  • 举报
回复
兄弟你为什么不考虑修改存储过程,修改存储过程是最简单的,因为存储过程在和表通讯的时候是可以直接插入null,在和应用程序通讯的时候,可以判断输入的值的长度是0,还是'null'
xjl9989 2010-11-17
  • 打赏
  • 举报
回复
DBNull
  • 打赏
  • 举报
回复
自己给自己顶下。 来人吧.

62,046

社区成员

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

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

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

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