如题:表名是由前缀detail和天数动态组装起来的,比如今天就是detail06,明天就是detail07,这样的sql使用prepareStatement预编译有效吗?怎么使用?
sql = "select sms_mt_send_detail"+day+" detail inner join .... where detail.user_mobile = ? and ...."
sql = "select sms_mt_send_detail"+day+" detail inner join .... where detail.user_mobile = ? and ...."
select * from ? where a = ?传参数的时候把表名和值传进去。。
我改成这样,但是报错 说是invalid table name,检查了一下,tableName值没问题 sql = "select detail.create_time,detail.send_time,detail.user_mobile,sms.message_content,detail.sender_biz_code,detail.errorcode,detail.ismg_status,detail.rpt_time from ? detail "
+" inner join sms_mt_send sms on detail.mt_send_id = sms.mt_send_id "
+" where detail.user_mobile = ? and to_char(detail.create_time,'yyyy-mm-dd')=? order by detail.mt_send_detail_id desc";
System.out.println(sql);
stmt=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
stmt.setString(1, tableName);
stmt.setString(2, user_mobile);
stmt.setString(3, toDate);
这样写
表1,表2你少了一个逗号。
String 会带单引号的
楼主这么冲动结了贴
艾。。