第一种:利用sql函数查询id集合
String sql = "select GROUP_CONCAT(DISTINCT product_id) productId from product_supplier where supplier_id="+supplierId; try { ps = db.getConn().prepareStatement(sql); rs = ps.executeQuery(); if(rs.next()) { con.append(" and p.id in ("+rs.getString(1)+")"); } } catch (SQLException e) { e.printStackTrace(); }
第二种:利用string拼接的方式把id结合拼起来
String sql = "select product_id from product_supplier where supplier_id="+supplierId; StringBuffer sb = new StringBuffer(); try { ps = db.getConn().prepareStatement(sql); rs = ps.executeQuery(); while (rs.next()) { sb.append(rs.getInt(1)+","); } String s =""; if(sb.toString().length()>=1){ s = sb.toString().substring(0,sb.length()-1); } con.append(" and p.id in ("+s+")");
第一种与第二种哪个的效率高呢
相关推荐
一:丢弃SQL语句直接拼接,虽然这个写起来很快很方便。 二:如果用SQL语句,那就使用参数化,添加Param 三:尽可能的使用存储过程,安全性能高而且处理速度也快 四:屏蔽SQL,javascript等注入(很是主要的)...
我一直都不喜欢在访问数据库时采用拼接SQL的方法,原因有以下几点: 1. 不安全:有被SQL注入的风险。 2. 可能会影响性能:每条SQL语句都需要数据库引擎执行[语句分析]之类的开销。 3. 影响代码的可维护性:SQL语句与...
大多数SQL实现支持以下类型的函数: 文本处理, 算术运算, 日期和时间, 数值处理。 Null:空值 空值当成无穷大处理,所有空值参与的运算皆为空。 空值与空值并不相等,因为空值不能直接运算。 如:prod_price...
如果不想下载,我这里做简要介绍思路:第一步:将子查询的多行数据转化成一个数组,第二步将子查询的数组用","拼接成字符串,使用了array和array_to_string函数 具体SQL在附件markdown文档里详细有写
会不会碰到这样一种情况呢?... * [array_to_sql 根据数组key和value拼接成需要的sql] * @param [type] $array [key, value结构数组] * @param string $type [sql类型insert,update] * @param array $exclu
CallableStatement:主要用来执行pl/sql的一些过程,函数等。 1.写一条恒成立的select语句,无论你输入的条件是什么,总是能讲表中的所有数据输出 select id,last_name from s_emp where '1' ='1'; where 1=1; ...
- <member name="M:Pic_Chart_Load.SQL_LINK.Oracle_Exe_Sql(System.String,System.String)"> <summary>Oracle执行SQL语句</summary> <param name="sql">SQL语句</param> 厂区</param> <remarks>P3/P4...
如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id. 3. #方式能够很大程度防止sql注入。 4.$方式无法防止Sql注入。 5.$方式...
$sql=<<<EOD select * from pages where pagename=’$pn’ EOD; python: 代码如下: print “”” This is an example of a string in the heredoc syntax. This text can span multiple lines “”” js...
03 高阶函数使用 04 函数闭包 05 函数闭包装饰器基本实现 06 函数闭包加上返回值 07 函数闭包加上参数 08 函数闭包补充:解压序列 09 函数闭包为函数加上认证功能 10 函数闭包模拟session 11 函数闭包装饰器运行流程...
2.解决办法:用to_char函数格式化数字显示 select to_char(0.338,’fm9999999990.00′) from dual; 结果:0.34 这里重点要看 fm9999999999.99,表示整数部分最多10位,小数部分2位,fm表示去 掉转位字符串后前面的空格,...
MySQL常用字符串函数 先看下数据库表 lengtt(str) length:获取参数值的字节个数(注意不是字符个数) SELECT LENGTH('haosy') 结果是5 SELECT LENGTH('haosy郝') 结果是8 不是6(是字节个数不是字符个数,因编码...
3:最好抛弃mysql_query这样的拼接SQL查询方式,尽可能使用PDO的prepare绑定方式。 4:使用rewrite技术隐藏真实脚本及参数的信息,通过rewrite正则也能过滤可疑的参数。 5:关闭错误提示,不给攻击者提供敏感信息...
1、在PL/SQL中写json串,无需声明json对象,只需直接拼接成格式正确的json字符串即可,因此数据库对象间json串的传递完全可以用varchar2或clob来代替。 2、结构复杂的json串节点元素值基本上可