动态表名组装的sql,还能预编译吗?解决方法
动态表名组装的sql,还能预编译吗?
如题:表名是由前缀detail和天数动态组装起来的,比如今天就是detail06,明天就是detail07,这样的sql使用prepareStatement预编译有效吗?怎么使用?
------解决方案--------------------
你是不已经写了吗?
那你就
select * from ? where a = ?
传参数的时候把表名和值传进去。。
------解决方案--------------------
我改成这样,但是报错 说是invalid table name,检查了一下,tableName值没问题
------解决方案--------------------
这是什么?表名不能有空格的,,,,
这样写
表1,表2
你少了一个逗号。。。。
------解决方案--------------------
这个是表的别名
------解决方案--------------------
哦,我知道了。你传进去的表名时带'' 单引号的。。你把单引号去掉。。
------解决方案--------------------
我在oralce 里 这么写
select * from ¶m
param = t_test 没有单引号哦。。
这张表的数据就查出来啊。。
------解决方案--------------------
你在程序里边定义tablename的类型的时候,不要把它定义成String型,定义成Object型。。。
String 会带单引号的。。。
楼主这么冲动结了贴。。。
艾。。
如题:表名是由前缀detail和天数动态组装起来的,比如今天就是detail06,明天就是detail07,这样的sql使用prepareStatement预编译有效吗?怎么使用?
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);
------解决方案--------------------
from ? detail
这是什么?表名不能有空格的,,,,
这样写
表1,表2
你少了一个逗号。。。。
------解决方案--------------------
这个是表的别名
------解决方案--------------------
哦,我知道了。你传进去的表名时带'' 单引号的。。你把单引号去掉。。
------解决方案--------------------
我在oralce 里 这么写
select * from ¶m
param = t_test 没有单引号哦。。
这张表的数据就查出来啊。。
------解决方案--------------------
你在程序里边定义tablename的类型的时候,不要把它定义成String型,定义成Object型。。。
String 会带单引号的。。。
楼主这么冲动结了贴。。。
艾。。