结果出来了,但是想看看大家有么有更好的办法。。
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"字段,里面用到了两次判断,当然这不是最难受的,最难受的是下面的参数,因为参数是一个数组,有的字段需要根据用户填没有填写来判断是否需要该参数!!!
求解,谢谢啦!!!
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"字段,里面用到了两次判断,当然这不是最难受的,最难受的是下面的参数,因为参数是一个数组,有的字段需要根据用户填没有填写来判断是否需要该参数!!!
求解,谢谢啦!!!
对啊,就是因为客户的选填项才需要拼接啊!!!用户没天禧,我可以不管,但是填写了是不是在原来(SQL语句)的基础上追加一点点呢???
是的,已经改好了,谢谢了!!!
OracleParameter[] prams = listPrams.ToArray();//关键是我忘记了List的ToArray()方法