工作日志 6/2/2014 - SQL的stored procedure
来源:互联网 发布:php自动发卡平台 编辑:程序博客网 时间:2024/06/01 10:37
今天是我生日,今年的生日是在工作中度过的,预示着这一岁的好势头吧!
今天起来fix这个parameterization的问题,按理说,如果用了它,就不该出现‘ unmatched quotes错误, 我就看了一下code,从C#里面看没有太多问题,就是把参数输进去,输进去的string里面带有单引号,到了SQL stored procedure,老头用的是这样的语句:
IF LEN(@NewSiteNameTrim) > 0 BEGIN SET @sSet = 'SET SiteName = ''' + @NewSiteNameTrim + ''' ' END而我之前看的材料都是直接在引号里面加参数的@symbol,用不着再加单引号啊,这不是多此一举嘛,这样出来的结果还是两个单引号啊,不能够escape啊。于是我改成了:
IF LEN(@NewSiteNameTrim) > 0 BEGIN SET @sSet = 'SET SiteName = @NewSiteNameTrim ' END把他放到SQL一试,结果不行。。。。。
很奇怪的是,如果是insert 这样的语句,比如:
INSERT INTO vidConfSites ( SiteName, AlternateName, DeliveryMode ) VALUES ( @SiteNameTrim, @AlternateNameTrim, @DeliveryModeTrim )是可以的,但如果是string 连接,如上边的,只能读出来@newsitenametrim这样的content,并不把它替换成parameter。
可能是它在SQL的stored procedure里面,如果在外面的vb或c#,那应该在后边加一个addParameter()method添加parameter的内容, 可是不在于是就奇怪了。
这样的解决方法,就是要手动的把单引号替换成两个单引号,这个工作不能在c#或vb外面做,因为insertion还好好的,如果替换了,用户输入的单引号就变成了双引号,不对,所以要在stored procedure里面的各个method里面改,用到了replace(@NewSiteNameTrim,'''','''''')语句,这样在sql测试成功,在外部测试便开始有些奇奇怪怪的input。
debug了半天,原来发现是因为在c#里string本来就被替换了单引号,到了stored procedure会两次替换,这是老头写的code啊,这岂不是坑我,于是我快崩溃了,花了一下午的时间把这个屁股上的屎给擦了,发了testing request邮件,这么个app就算完成。
0 0
- 工作日志 6/2/2014 - SQL的stored procedure
- 6/27 工作日志 SQL stored procedure里面的SQL injection prevetion
- Stored procedure & Sql Injection
- 执行方法为PL/SQL Stored Procedure的并发程序
- Sql server stored procedure operating summary 01
- Sql server database stored procedure reference 01
- SQL Server 2000 Stored Procedure Programming
- Assignment 1: PL/SQL stored procedure P9
- Overview of SQL Server Stored Procedure
- SQL存储过程(Stored Procedure)
- Stored Procedure
- YIi调用mysql的stored procedure
- 查看stored procedure的执行计划
- SQL Debug && Stored Procedure Debug ----- SQL Server Management Studio
- SQL Stored Procedure Wrapper & Typed DataSet Generator for .NET
- illustrates how to call a SQL Server stored procedure
- SQL Server 2005: Stored Procedure call activity statistics & execution time
- sql查询查所有存储过程(stored procedure)
- 谁说技术男没有人文情怀:当旅途遇到生命赞歌
- top 10 SMT paper
- 统治世界的十大算法
- hdu 1496
- leetcode-Gas Station
- 工作日志 6/2/2014 - SQL的stored procedure
- IOS开发计算文本尺寸
- php动态加载模块的时候出现PHP_FE_END’未声明(不在函数内) -----{error: ‘PHP_FE_END’ undeclared here (not in a function)}
- DSP 中的基础算法和模型的详细解析
- 16进制和字符串(包括中文)的转换
- python简单习题系列4
- C++ Primer笔记2_四种类型转换_异常机制
- 2014年山东省第五届ACM大学生程序设计竞赛 E. Factorial
- spring helloworld