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=? ":"";
这是什么意思?给我我翻译一下
1.使用条件运算符 ?: msgid!=null ? and+"msgid=?":"";意思就是如果msgid不为空,就返回 and+"msgid=?",否则返回“”
2.然后通过msgid是否为空返回 and变量 就是如果为空就返回“” 否则 msgid,或者username,title下面依次类推,返回 “and”, 就是用来拼接两个条件的。
假设msgid不为空,username也不为空,后面依次类推
sql+"" +msgid=? +“and” +username=? +……
and+"msgid=?",是什么意思?能在解释详细一点吗?
@博学多思: and应该就是拼接SQL条件的and 后面就是字段=? 难道?就是value吗 这个我不太清楚 你能否再多贴点代码呢?
@博学多思: 你这个是哪个数据库用的sql
? 可能是占位符 ,值在后面添加(我知道android里边sqlite的占位符就是用的问号)
@mushishi: 我这个是java JSPl里的代码,是用来更新数据的
@mushishi: @mushishi: 我这个是java JSP里的代码,是用来更新数据的
就是sql语句,应该是sql server数据库
sql += msgid!=null ? and + " msgid=? ":"";
?号是三元运算符 问号前面是条件
冒号: 前面是条件成立时的值
冒号后面是条件不成立时的值
等价于 if
if(msgid!=null) { sql+= and +" msgid=?"; } else { sql+=""; }
sql+=and +"msgid=?";什么意思
sql+=“”;什么意思
@博学多思: sql+=and +"msgid=?"; 就是sql= sql+and +"msgid=?"; 你的and 是变量 所以看起来很别扭
这,sql+="" 等价于sql=sql+"",
然后?:,是三目运算符。这段代码可以改造为循环。
你能改一下,并解释一下吗
@博学多思:
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。
拼接sql