首页 新闻 会员 周边

关于sql语句,求助

0
悬赏园豆:5 [已解决问题] 解决于 2013-12-29 15:19

String and = "";
   sql += msgid!=null ? and + " msgid=? ":"";
   and = msgid!=null ? " and ":"";
   sql += username!=null ? and + " username=? ":"";
   and = username!=null ? " and ":"";
   sql += title!=null ? and + " title='" + title + "' ":"";
   and = title!=null ? " and ":"";
   sql += msgcontent!=null ? and + " msgcontent=? ":"";
   and = msgcontent!=null ? " and ":"";
   sql += sendto!=null ? and + " sendto=? ":"";
   and = sendto!=null ? " and ":"";
   sql += state!=null ? and + " state=? ":"";
   and = state!=null ? " and ":"";
   sql += msg_create_date != null ? and + " msg_create_date=? ":"";

这是什么意思?给我我翻译一下

博学多思的主页 博学多思 | 初学一级 | 园豆:76
提问于:2013-12-28 10:52
< >
分享
最佳答案
0

1.使用条件运算符  ?:     msgid!=null ? and+"msgid=?":"";意思就是如果msgid不为空,就返回  and+"msgid=?",否则返回“”

2.然后通过msgid是否为空返回 and变量  就是如果为空就返回“” 否则 msgid,或者username,title下面依次类推,返回 “and”,  就是用来拼接两个条件的。

 

假设msgid不为空,username也不为空,后面依次类推   

sql+"" +msgid=? +“and” +username=? +……

收获园豆:2
aehyok | 小虾三级 |园豆:1212 | 2013-12-28 11:08

 and+"msgid=?",是什么意思?能在解释详细一点吗?

博学多思 | 园豆:76 (初学一级) | 2013-12-28 11:54

@博学多思:    and应该就是拼接SQL条件的and    后面就是字段=?   难道?就是value吗  这个我不太清楚  你能否再多贴点代码呢?

aehyok | 园豆:1212 (小虾三级) | 2013-12-28 11:56

@博学多思: 你这个是哪个数据库用的sql

 ? 可能是占位符 ,值在后面添加(我知道android里边sqlite的占位符就是用的问号)

mushishi | 园豆:230 (菜鸟二级) | 2013-12-28 12:00

@mushishi: 我这个是java  JSPl里的代码,是用来更新数据的

博学多思 | 园豆:76 (初学一级) | 2013-12-28 12:09

@mushishi: @mushishi: 我这个是java  JSP里的代码,是用来更新数据的

博学多思 | 园豆:76 (初学一级) | 2013-12-28 12:10

就是sql语句,应该是sql server数据库

博学多思 | 园豆:76 (初学一级) | 2013-12-28 12:21
其他回答(3)
0

sql += msgid!=null ? and + " msgid=? ":"";    

?号是三元运算符   问号前面是条件

         冒号: 前面是条件成立时的值  

         冒号后面是条件不成立时的值

等价于 if  

if(msgid!=null)
{
      sql+=  and +" msgid=?"; 
}
else
{
      sql+="";  
}

 

收获园豆:1
mushishi | 园豆:230 (菜鸟二级) | 2013-12-28 11:56

sql+=and +"msgid=?";什么意思

sql+=“”;什么意思

支持(0) 反对(0) 博学多思 | 园豆:76 (初学一级) | 2013-12-28 12:11

@博学多思:  sql+=and +"msgid=?";  就是sql= sql+and +"msgid=?";    你的and 是变量   所以看起来很别扭

支持(0) 反对(0) mushishi | 园豆:230 (菜鸟二级) | 2013-12-29 11:41
0

这,sql+=""  等价于sql=sql+"",

然后?:,是三目运算符。这段代码可以改造为循环。

收获园豆:2
幻天芒 | 园豆:37175 (高人七级) | 2013-12-28 12:53

你能改一下,并解释一下吗

支持(0) 反对(0) 博学多思 | 园豆:76 (初学一级) | 2013-12-28 13:29

@博学多思: 

var builder=new StringBuilder();
var colNames=new Dictionary<string,string>{{"msgid",msgid},{"username",username}};
foreach(var key in colNames)
{
    if(!string.IsNullOrEmpty(colNames[key]))
    {
        builder.AppendFormat(" and {0}=?",key);
    }
}
return builder.ToString();
这个是C#版本的,你用HashMap然后改成Java版本即可。
这样的话,圈复杂度只有2。
支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2013-12-28 15:07
0

拼接sql

雾静 | 园豆:561 (小虾三级) | 2013-12-28 17:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册