String str = "insert into table(USER,PWD) values(username,password)";
JavaBean bean = new JavaBean();
JavaBean封装了username和password
我想把sql中的username替换成bean.getUsername(),password替换成bean.getPassword()
我用的是sql = sql.replaceAll("username",bean.getUsername());和
sql = sql.replaceAll("username",bean.getPassword();
这个就有个问题,如果username或password为null,那就会报错
遇到这种情况,我要怎么把bean.getUsername()得到的值就写成null,把sql里的username给替换了(换成null)
注意,这只是个例子,因为bean里有很多属性,我不能挨个判断书否为null再去替换,想一次性替换成功,即有值就替换成得到的值,是null就替换成null
这个,各位大侠,有什么高招?
JavaBean bean = new JavaBean();
JavaBean封装了username和password
我想把sql中的username替换成bean.getUsername(),password替换成bean.getPassword()
我用的是sql = sql.replaceAll("username",bean.getUsername());和
sql = sql.replaceAll("username",bean.getPassword();
这个就有个问题,如果username或password为null,那就会报错
遇到这种情况,我要怎么把bean.getUsername()得到的值就写成null,把sql里的username给替换了(换成null)
注意,这只是个例子,因为bean里有很多属性,我不能挨个判断书否为null再去替换,想一次性替换成功,即有值就替换成得到的值,是null就替换成null
这个,各位大侠,有什么高招?
PreparedStatement pstat=con.prepareStatement(insert into table(USER,PWD) values(?,?)";
pstat.setString(0,bean.getUsername());
pstat.setString(1,bean.getPassword());
pstat.execute();
你再看有没有错?
sql = sql.replaceAll("username",bean.getPassword()+"");
不能用判断,判断是否为空后,楼主的登陆可以用SQL注入方法攻破,应该用PreparedStatement。
PreparedStatement肯定能解决,看一楼
ENABLED,RUNNING,JOB_TYPE_ID) (SELECT isnull(MAX(JOB_ID),0)+1,'?',
'?','?','?',?,1,?,7 FROM cfgdb..CFG_JOB_INPUT)PreparedStatement我还不太会用,请帮我看看我这个sql,这是Sybase数据库的
PreparedStatement pstmt = (PreparedStatement)MyDBConnection.getPreStatement(addtype1toinput);
pstmt.setString(1, t.getJobname());
pstmt.setString(2, start);
pstmt.setString(3, end);
pstmt.setString(4, unit);
pstmt.setString(5, count);
pstmt.setString(7, running);pstmt的连接没问题,t是我定义的JavaBean的对象
我用了这后,报java.sql.SQLException: JZ0SB: 参数索引超出范围: 3。
能帮我改一下吗?
总共才6个值啊
ENABLED,RUNNING,JOB_TYPE_ID) (SELECT isnull(MAX(JOB_ID),0)+1,'?',
'?','?','?',?,1,?,7 FROM cfgdb..CFG_JOB_INPUT)
中的 '?' 什么意思
预编译语句,?是占位符 ,不需要加‘’呀
这是怎么回事,怎么到3就执行不了了?