我有一个网页由一个form表单,有三个文本框为输入查询的条件,查询方式为:可以三个条件同时满足,或任意满足其中两个条件,或任意一个条件的查询。我想求一段代码(查询的语句sql),应该怎么写?谢谢!!!
解决方案 »
- 求教一个用java转换格式的问题~
- [求救]dotcms中 在Container 里遍历所有Contents 时,怎么没遍历前(Pre Loop)得到Contents的总数量?
- 初学,关于ajax异步的问题
- 用myeclipse编辑jsp时,提示unkown tag(!)
- 很简单的问题,有空请帮忙看看这两段到底有什么区别?
- 求助SmartUpload上传组件报错,各位仁兄有没有关于SmartUpload上传组件的说明文档,100分相送!
- poi 哪里下载?谢谢
- 请问有谁做过触摸屏软件开发吗?请指教指教!!
- response.setContentType("application/octet-stream")起到什么作用?
- 高分征解:60分解决简单问题
- 请问博客的模版更换如何实现?
- 有难度:统计网页的访问量(分会员和游客两种身份)
但是三个条件的我就想不明白了,不知道该怎么写了.麻烦帮我看一下,谢谢!!!<%
request.setCharacterEncoding("GBK"); //处理中文字符串
//构造查询SQL语句
String sqlString=null; //SQL语句
String name = request.getParameter("name");
String sex = request.getParameter("sex");
if(name==null||name.trim().length()==0)
sqlString = new String("select * from abc");
else
sqlString = new String("select * from abc where name like '%"+name+"%'");
if(sex==null||sex.trim().length()==0)
; //SQL语句不变
else
if(sqlString.indexOf("where")==-1) //SQL语句中没有where子句
sqlString = sqlString+" where sex like '"+sex+"'"+" order by dd";
else
sqlString = sqlString+" and sex like '"+sex+"'"+" order by dd";
%>
String sex = "bbb";
String address = "www"; StringBuffer sql = new StringBuffer("select * from user where 1 = 1 ");
boolean valid = false; if (name != null && name.trim().length() > 0) {
sql.append(" and name like '%" + name + "%'");
valid = true;
}
if (sex != null && sex.trim().length() > 0) {
sql.append(" and sex like '%" + sex + "%'");
valid = true;
}
if (address != null && address.trim().length() > 0) {
sql.append(" and address like '%" + address + "'%");
valid = true;
}
if(valid) {
//执行sql
}
String sex = "bbb";
String address = "www";这三个换成你的request.getParameter();
就可以了
把有输入的条件给数组conditions, 没有输入的赋nullString[] conditions = new String[3];... ...
StringBuffer sql = "select * from table1 where 1 <> 1 ";
for (int i; i < conditions.length; i++) {
if (conditions[i] != null) {
sql.append(" or ").append(conditions[i]);
}
}return sql.toString();... ...
//执行sql
}
if(valid) {
//执行sql
}
是吧这些写在里面吗 Connection con;
Statement sql;
ResultSet rs;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url ="jdbc:odbc:jj";
con=DriverManager.getConnection(url,"xkxk","xkxk");
sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=sql.executeQuery(sqlString);
String sex = "bbb";
String address = "www"; StringBuffer sql = new StringBuffer("select * from user where 1 = 1 ");
boolean valid = false; if (name != null && name.trim().length() > 0) {
sql.append(" and name like '%" + name + "%'");
valid = true;
}
if (sex != null && sex.trim().length() > 0) {
sql.append(" and sex like '%" + sex + "%'");
valid = true;
}
if (address != null && address.trim().length() > 0) {
sql.append(" and address like '%" + address + "'%");
valid = true;
} if (valid) { Connection con = null;
Statement stmt = null;
ResultSet rs; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:jj"; con = DriverManager.getConnection(url, "xkxk", "xkxk");
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql.toString()); while (rs.next()) { // 操作数据
} }
后面加条件就ok了, 若没条件这个就能用呀!!!
后面加条件就ok了, 若没条件这个就能用呀!!!”但是提示错误页面
这么写有意义吗
与
select * from table1 where (a='a') 有区别吗
sql += " and name="+name; if(pwd != null && !pwd.equals(""))
sql += " and pwd="+pwd; if(email != null && !email.equals(""))
sql += " and email="+email;
} else {
out.println("<script>alert('输入查询条件')</script>");
return ;
}
function validInfo(){
var textname1 = document.forms[0].textname1;
var textname2 = document.forms[0].textname2;
var textname3 = document.forms[0].textname3;
if(textname1.value==''&&textname2.value==''&&textname3.value==''){
alert("至少输入一个条件!");
return false;
}
return true
}
</script>在你提交的时候调用这个函数就OK啦!
假设三个条件 name pwd email 表名 userString sql = "select * from user where 1='1'"; 這句不是一開始就會執行了麼,它直接就顯示這條語句了。後面的條件就沒有執行了啊.(我就是碰到這樣的情況) if(name != null && !name.equals(""))
sql += " and name="+name; if(pwd != null && !pwd.equals(""))
sql += " and pwd="+pwd; if(email != null && !email.equals(""))
sql += " and email="+email;
sql += " and name="+name; if(pwd != null && !pwd.equals(""))
sql += " and pwd="+pwd; if(email != null && !email.equals(""))
sql += " and email="+email;
rs = st.executeQuery(sql);