拼接sql是陷阱

项目临时新增一个功能,此时我们习惯自己拼接一个sql。

更可怕的是,后期用户要求新增查询条件,甚至有上10个查询条件,这时的拼接更头疼,if append

append(" [email protected]")

append("and ……")

结果就成了@statusand

执行sql的时候显然会出错,不存在@statusand 变量。

启示:

好的方法是尽量避免拼接sql;

或者重写stringbuild.append方法,自动在两头追加空格

时间: 2024-10-06 21:13:17

拼接sql是陷阱的相关文章

java用字符串拼接SQL语句的特殊字符转义问题

在实际的项目开发中,往往会根据用户在界面的文本框中输入的信息,去数据库中做模糊查询.如果使用的是原始的JDBC和SQL,往往需要对用户的输入进行转义,避免生成的sql语法错误,或者防止SQL注入.比如对输入的%和_和',就需要进行转义,因为这3个字符是SQL的特殊字符,如果不处理会导致sql出错或者是查询数据不正确. 假如有这样1个查询请求,模糊查询标题中包含a%b_cc'd的记录,正确的sql应该是下面这样的: select * from t_sch_work_info t where t.t

通过excel拼接SQL

"哎,发你一个excel,把这几百条数据修复喽."经理喊道. "嗯,好的!" 正在看资料的我被经理临时分的任务打断,搞吧!这就是我平时中的一个工作场景. 工作中总是会遇到要修复数据,数据在excel中,少的几百行,多的上万行,一般要通过excel处理的应该是不涉及到复杂的业务逻辑,直接拼接SQL就能搞定.当然你要通过excel写个程序读取数据当然也是可以的,由于要操作线上的数据库,所以这种情况下选择写程序,还要等到上线,然后夜里跑程序,不及时,pass掉,直接拼装S

【批量加入】-拼接sql字符串

如今做的一个项目须要用到批量加入,可是封装的底层没有这种方法,所以自食其力,自己来写.我们用的是拼接sql字符串的方法来实现功能. 详细实现流程:首先将须要的数据存储到实体的list中,然后将这个list传给我们批量加入的方法.批量加入的方法首先应该打开数据库连接,然后開始进行sql字符串的拼接,拼接完毕后.调用sqlhelper方法进行加入. 详细代码例如以下: #region 批量加入实体 /// <summary> /// 批量加入实体 /// </summary> ///

【批量添加】-拼接sql字符串

现在做的一个项目需要用到批量添加,但是封装的底层没有这个方法,所以自食其力,自己来写.我们用的是拼接sql字符串的方法来实现功能. 具体实现流程:首先将需要的数据存储到实体的list中,然后将这个list传给我们批量添加的方法.批量添加的方法首先应该打开数据库连接,然后开始进行sql字符串的拼接,拼接完成后,调用sqlhelper方法进行添加. 具体代码如下: #region 批量添加实体 /// <summary> /// 批量添加实体 /// </summary> /// &l

SQLSERVER 根据传入的参数拼接sql语句字符串,反馈结果集

ALTER PROCEDURE [dbo].[usp_visit_detail](@siteid BIGINT, @Startime VARCHAR(15), @Endtime  VARCHAR(15), @Aflag  INT = 10,                                    --初始值为10,非10,则表示有传入参数 @Area   VARCHAR(20) = 'N',               -- --初始值为N,非N,则表示有传入参数 @Nflag  

使用表达式避免拼接SQL语句

在SQL语句编写过程中,无论在存储过程中还是在程序中,有时为了使语句兼容全部情况与某字段的特殊情况,不得不拼接SQL字串 如下表 商品ID 类别ID 1 1 2 1 3 2 4 3 5 3 如果我们要写一个SQL,改SQL可通过类别ID获得该类别的商品ID,并且要求兼容传入类别ID为0时获得所有商品,我们不得不拼接SQL了 --@类别ID为传入的参数 DECLARE @Sql NVARCHAR(500) SET @Sql='SELECT * FROM 商品' IF(@类别ID!=0) SET @

动态拼接SQL计算公式

1 --模拟数据 2 IF OBJECT_ID('tempdb..#t')>0 DROP TABLE #t 3 SELECT * INTO #t 4 FROM ( 5 SELECT '1' id,2030 g,265 h, 830 k,'g*h+h*k' gs,0 tt 6 UNION ALL 7 SELECT '2' id,2030 g,0 h, 0 k,'g*4' gs,0 tt 8 UNION ALL 9 SELECT '3' id,2030 g,265 h, 0 k,'(g+h)*2'

2016.11.03 1.优化拼接SQL 2.类里面的属性 不传参方法里也可以直接用

string Url = string.Format("{0}/api/sms/v1/s?t={1}&n={2}&m=[{3}]短信:{4}", MainUrl, ApiToken, PhoneNumber, ApiLogo, Content); 用占位符的方法比拼接SQL来的更好 -----------------------------------------------------------------------------------------------

sqlserver 存储过程中拼接sql语句 动态执行

ALTER PROC [dbo].[Student_Friend_Get] @startRowIndexId INT, @maxNumberRows INT, @schoolId INT, @gradeId INT, @cId INT, @keyWords NVARCHAR(100), @userName VARCHAR(50) AS BEGIN DECLARE @sqlfilter VARCHAR(max) SET @sqlfilter = ' ' IF(@schoolId <> -1) S