如何拼接参数化的SQL语句???

qingYun1029 2011-07-08 11:05:42
结果出来了,但是想看看大家有么有更好的办法。。


StringBuilder sbSql = new StringBuilder();
sbSql.Append(@"insert into vw_member_info_web
(
MEM_NAME,
PASSWORD,
SEX,
MOBILE,
LIC_TYPE_ID,
LIC_NO,HOME_PHONE,
MAIL,
ZIP,
DETAIL_ADDR,
DVR_LIC_NO,
REG_MODE,
RECOMMEND_NAME,
KNOW_MODE_DESC,
CRE_USER,
CRE_USER_ID");

if (!string.IsNullOrEmpty(getDrivLiceDay))
{
sbSql.Append(",DVR_LIC_BGN_DATE");
}

if (!string.IsNullOrEmpty(birthday))
{
sbSql.Append(",BIRTHDAY");
}

sbSql.Append(@")
values
(
:userName,
:pwd,
:sex,
:mobile,
:cretType,
:cretNo,:fixedPhone,
:mail,
:postCode,
:address,
:dvrLicNo,
:reg_mode,
:recomName,
:knowDesc,
:cre_user,
:cre_user_id");

if (!string.IsNullOrEmpty(getDrivLiceDay))
{
sbSql.Append(",:dvrLicDate");
}

if (!string.IsNullOrEmpty(birthday))
{
sbSql.Append(",:birthday");
}

sbSql.Append(")");


OracleParameter[] prams = {
new OracleParameter(":userName", userName),
new OracleParameter(":pwd", pwd),
new OracleParameter(":sex", sex),
new OracleParameter(":mobile", mobileNo),
new OracleParameter(":cretType", GetLicType(cretType)),
new OracleParameter(":cretNo", cretNo),
new OracleParameter(":fixedPhone", fixedPhone),
new OracleParameter(":mail", email),
new OracleParameter(":postCode", postCode),
new OracleParameter(":address", contactAdd),
new OracleParameter(":dvrLicNo", drivLicense),
new OracleParameter(":recomName", referee),
new OracleParameter(":knowDesc", couponCode),
new OracleParameter(":reg_mode", "网站注册"),
new OracleParameter(":cre_user","网站"),
new OracleParameter(":cre_user_id","134")
};


当一个注册页面填写的信息比较多,并且不确定的因素也比比较时时,该如何很好的拼接参数化的SQL语句???

例如上面的例子中,为了拼接一个"DVR_LIC_BGN_DATE"字段,里面用到了两次判断,当然这不是最难受的,最难受的是下面的参数,因为参数是一个数组,有的字段需要根据用户填没有填写来判断是否需要该参数!!!


求解,谢谢啦!!!

...全文
515 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingYun1029 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 beckfun 的回复:]

可以考虑用List
[/Quote]

是的,已经改好了,谢谢了!!!


OracleParameter[] prams = listPrams.ToArray();//关键是我忘记了List的ToArray()方法
beckfun 2011-07-08
  • 打赏
  • 举报
回复
可以考虑用List
qingYun1029 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hl362496158 的回复:]

要是咱把没填的都加个默认值呢??
[/Quote]

对啊,没填你有默认值可以不管它。。。

但是填写了是不是应该追加啊???
hl362496158 2011-07-08
  • 打赏
  • 举报
回复
要是咱把没填的都加个默认值呢??
sqz10200 2011-07-08
  • 打赏
  • 举报
回复
qingYun1029 2011-07-08
  • 打赏
  • 举报
回复
蛋疼~~~~
qingYun1029 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xuexiaodong2009 的回复:]

设计就有问题,用户没填就是空或者默认值,不可以吗?
否则十个字段得些多少个存储过程
[/Quote]

对啊,就是因为客户的选填项才需要拼接啊!!!

用户没天禧,我可以不管,但是填写了是不是在原来(SQL语句)的基础上追加一点点呢???
虎虎0369 2011-07-08
  • 打赏
  • 举报
回复
默认值 。。。
xuexiaodong2009 2011-07-08
  • 打赏
  • 举报
回复
设计就有问题,用户没填就是空或者默认值,不可以吗?
否则十个字段得些多少个存储过程
zhouyuehui 2011-07-08
  • 打赏
  • 举报
回复
存到数据库里 直接循环
Ayanamikula 2011-07-08
  • 打赏
  • 举报
回复
帮顶,
qingYun1029 2011-07-08
  • 打赏
  • 举报
回复
怎么没人抢沙发啊???

62,244

社区成员

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

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

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

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