7 个解决方案
#1
还是if else
#2
也可以用if else啊...只是拼SQL嘛。
不存在就这样。比如:if(where_a!=""){
sql.append(" and where_a="+where_a);
}拼好了SQL再传到preparedstatement里,就可以了。传之前,
可以通过Syetem.out.println(sql.toString());看你拼的语句是否是对的。
不存在就这样。比如:if(where_a!=""){
sql.append(" and where_a="+where_a);
}拼好了SQL再传到preparedstatement里,就可以了。传之前,
可以通过Syetem.out.println(sql.toString());看你拼的语句是否是对的。
#3
1.你写个方法,有IF
2.直接传个对象
2.直接传个对象
#4
对,2楼的兄弟说的方法还是可以的。
你的sql语句都是在执行之前拼接好,
这和是preparedstatement还是statement是没有关系的
关键是你到时sql语句的格式要掌握好
#5
偶认为用if else去判断可维护性,可读性差,作为模糊查询应该用通配符%,别管它有值没值,都在变量前后加%就行了
#6
我想是我没有把问题说清楚,我的意思是这样的,
perParedStatement pre=con.PerParedStatement("insert into goods values(?,?,?)");
pre.setString(1,"sun");
pre.setString(2,"java");
pre.setString(3,"ajax");
pre.executeUpdate();
如果用了preparedStatement对象,在对组合查询form里提交的参数怎么去拼接sql语句,?占位符怎么判断,PerparedStatement的sql语句里并没有实际的查询参数 是?占位符
下面是我的一个数据库操作对象用的是Statement对象,谁帮我看下该成PerparedStatement后怎么去拼这个sql语句
package javabean;
import java.io.*;
import java.util.*;
import java.sql.*;
import javabean.*;
public class ModfiyUserInfo {
private Data_Con con;
private ResultSet set;
private int i;
public void updateForUser(UserInfo user)
{
con=new Data_Con();
con.con();
String sql="update userInfo ";
if(user.getInterprovincial()!="")
{
sql+="set Interprovincial='"+user.getInterprovincial()+"'";
}
if(user.getCity()!="")
{
sql+=",city='"+user.getCity()+"'";
}
if(user.getRealname()!="")
{
sql+=",realname='"+user.getRealname()+"'";
}
if(user.getSex()!="")
{
sql+=",sex='"+user.getSex()+"'";
}
if(user.getTel()!="")
{
sql+=",tel='"+user.getTel()+"'";
}
if(user.getIdcard()!="")
{
sql+=",idcard='"+user.getIdcard()+"'";
}
try{
sql+=" where username='"+user.getUsername()+"'";
// sql=new String(sql.getBytes("ISO-8859-1"),"UTF-8");
System.out.print(sql+"\n");
i=con.stmt.executeUpdate(sql);
}catch(Exception e){System.out.print(e.getMessage()+"\n");System.out.print(i+"\n");}
}
}
perParedStatement pre=con.PerParedStatement("insert into goods values(?,?,?)");
pre.setString(1,"sun");
pre.setString(2,"java");
pre.setString(3,"ajax");
pre.executeUpdate();
如果用了preparedStatement对象,在对组合查询form里提交的参数怎么去拼接sql语句,?占位符怎么判断,PerparedStatement的sql语句里并没有实际的查询参数 是?占位符
下面是我的一个数据库操作对象用的是Statement对象,谁帮我看下该成PerparedStatement后怎么去拼这个sql语句
package javabean;
import java.io.*;
import java.util.*;
import java.sql.*;
import javabean.*;
public class ModfiyUserInfo {
private Data_Con con;
private ResultSet set;
private int i;
public void updateForUser(UserInfo user)
{
con=new Data_Con();
con.con();
String sql="update userInfo ";
if(user.getInterprovincial()!="")
{
sql+="set Interprovincial='"+user.getInterprovincial()+"'";
}
if(user.getCity()!="")
{
sql+=",city='"+user.getCity()+"'";
}
if(user.getRealname()!="")
{
sql+=",realname='"+user.getRealname()+"'";
}
if(user.getSex()!="")
{
sql+=",sex='"+user.getSex()+"'";
}
if(user.getTel()!="")
{
sql+=",tel='"+user.getTel()+"'";
}
if(user.getIdcard()!="")
{
sql+=",idcard='"+user.getIdcard()+"'";
}
try{
sql+=" where username='"+user.getUsername()+"'";
// sql=new String(sql.getBytes("ISO-8859-1"),"UTF-8");
System.out.print(sql+"\n");
i=con.stmt.executeUpdate(sql);
}catch(Exception e){System.out.print(e.getMessage()+"\n");System.out.print(i+"\n");}
}
}
#7
不用吧 拼sql不放在底层去 sql由参数传进去 每次传sql进去
比如
public void update(String sql,Object[] params){
perParedStatement pre=con.PerParedStatement(sql);
if(params!=null&¶ms.length>0){
for(int i=0;i<params.length;i++){
pre.setObject(i+1,params[i]);
}
}
...略
}
你还可以把为ps设置参数的那段封个方法。。。。很灵活了。。
比如
public void update(String sql,Object[] params){
perParedStatement pre=con.PerParedStatement(sql);
if(params!=null&¶ms.length>0){
for(int i=0;i<params.length;i++){
pre.setObject(i+1,params[i]);
}
}
...略
}
你还可以把为ps设置参数的那段封个方法。。。。很灵活了。。
#1
还是if else
#2
也可以用if else啊...只是拼SQL嘛。
不存在就这样。比如:if(where_a!=""){
sql.append(" and where_a="+where_a);
}拼好了SQL再传到preparedstatement里,就可以了。传之前,
可以通过Syetem.out.println(sql.toString());看你拼的语句是否是对的。
不存在就这样。比如:if(where_a!=""){
sql.append(" and where_a="+where_a);
}拼好了SQL再传到preparedstatement里,就可以了。传之前,
可以通过Syetem.out.println(sql.toString());看你拼的语句是否是对的。
#3
1.你写个方法,有IF
2.直接传个对象
2.直接传个对象
#4
对,2楼的兄弟说的方法还是可以的。
你的sql语句都是在执行之前拼接好,
这和是preparedstatement还是statement是没有关系的
关键是你到时sql语句的格式要掌握好
#5
偶认为用if else去判断可维护性,可读性差,作为模糊查询应该用通配符%,别管它有值没值,都在变量前后加%就行了
#6
我想是我没有把问题说清楚,我的意思是这样的,
perParedStatement pre=con.PerParedStatement("insert into goods values(?,?,?)");
pre.setString(1,"sun");
pre.setString(2,"java");
pre.setString(3,"ajax");
pre.executeUpdate();
如果用了preparedStatement对象,在对组合查询form里提交的参数怎么去拼接sql语句,?占位符怎么判断,PerparedStatement的sql语句里并没有实际的查询参数 是?占位符
下面是我的一个数据库操作对象用的是Statement对象,谁帮我看下该成PerparedStatement后怎么去拼这个sql语句
package javabean;
import java.io.*;
import java.util.*;
import java.sql.*;
import javabean.*;
public class ModfiyUserInfo {
private Data_Con con;
private ResultSet set;
private int i;
public void updateForUser(UserInfo user)
{
con=new Data_Con();
con.con();
String sql="update userInfo ";
if(user.getInterprovincial()!="")
{
sql+="set Interprovincial='"+user.getInterprovincial()+"'";
}
if(user.getCity()!="")
{
sql+=",city='"+user.getCity()+"'";
}
if(user.getRealname()!="")
{
sql+=",realname='"+user.getRealname()+"'";
}
if(user.getSex()!="")
{
sql+=",sex='"+user.getSex()+"'";
}
if(user.getTel()!="")
{
sql+=",tel='"+user.getTel()+"'";
}
if(user.getIdcard()!="")
{
sql+=",idcard='"+user.getIdcard()+"'";
}
try{
sql+=" where username='"+user.getUsername()+"'";
// sql=new String(sql.getBytes("ISO-8859-1"),"UTF-8");
System.out.print(sql+"\n");
i=con.stmt.executeUpdate(sql);
}catch(Exception e){System.out.print(e.getMessage()+"\n");System.out.print(i+"\n");}
}
}
perParedStatement pre=con.PerParedStatement("insert into goods values(?,?,?)");
pre.setString(1,"sun");
pre.setString(2,"java");
pre.setString(3,"ajax");
pre.executeUpdate();
如果用了preparedStatement对象,在对组合查询form里提交的参数怎么去拼接sql语句,?占位符怎么判断,PerparedStatement的sql语句里并没有实际的查询参数 是?占位符
下面是我的一个数据库操作对象用的是Statement对象,谁帮我看下该成PerparedStatement后怎么去拼这个sql语句
package javabean;
import java.io.*;
import java.util.*;
import java.sql.*;
import javabean.*;
public class ModfiyUserInfo {
private Data_Con con;
private ResultSet set;
private int i;
public void updateForUser(UserInfo user)
{
con=new Data_Con();
con.con();
String sql="update userInfo ";
if(user.getInterprovincial()!="")
{
sql+="set Interprovincial='"+user.getInterprovincial()+"'";
}
if(user.getCity()!="")
{
sql+=",city='"+user.getCity()+"'";
}
if(user.getRealname()!="")
{
sql+=",realname='"+user.getRealname()+"'";
}
if(user.getSex()!="")
{
sql+=",sex='"+user.getSex()+"'";
}
if(user.getTel()!="")
{
sql+=",tel='"+user.getTel()+"'";
}
if(user.getIdcard()!="")
{
sql+=",idcard='"+user.getIdcard()+"'";
}
try{
sql+=" where username='"+user.getUsername()+"'";
// sql=new String(sql.getBytes("ISO-8859-1"),"UTF-8");
System.out.print(sql+"\n");
i=con.stmt.executeUpdate(sql);
}catch(Exception e){System.out.print(e.getMessage()+"\n");System.out.print(i+"\n");}
}
}
#7
不用吧 拼sql不放在底层去 sql由参数传进去 每次传sql进去
比如
public void update(String sql,Object[] params){
perParedStatement pre=con.PerParedStatement(sql);
if(params!=null&¶ms.length>0){
for(int i=0;i<params.length;i++){
pre.setObject(i+1,params[i]);
}
}
...略
}
你还可以把为ps设置参数的那段封个方法。。。。很灵活了。。
比如
public void update(String sql,Object[] params){
perParedStatement pre=con.PerParedStatement(sql);
if(params!=null&¶ms.length>0){
for(int i=0;i<params.length;i++){
pre.setObject(i+1,params[i]);
}
}
...略
}
你还可以把为ps设置参数的那段封个方法。。。。很灵活了。。