带参数的sql语句!不懂
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带参数的sql语句!不懂相关的知识,希望对你有一定的参考价值。
带参数的sql语句是什么语句
sql = "SELECT name FROM person WHERE id=? and password=?" ;
这算什么语句,这是select语句,
select * from person;
insert into note(title,author,content) values('标题','作者','123123');
sql ="insert into note(title,author,content) values(?,?,?)";
大家帮帮说说,什么是带参数的SQL语句,,
再说说优点和缺点
sql ="insert into note(title,author,content) values(?,?,?)";
像这种有带问号的SQL语句就是带参数的。
优点就是:1、防止SQL注入
2、参数不用引号(出错率低)
缺点:要逐个把参数对应的写麻烦了一点,不过现在程序基本都是带参数的,这样安全性高了好多 参考技术A sql ="insert into note(title,author,content) values(?,?,?)";
上面的这样的就是带参数的SQL语句。
下面的那样的就是存储过程。
set rs=server.CreateObject("adodb.recordset")
sql="select * from note"
rs.open sql,conn,1,3
rs.addnew
rs("title")=?
rs("author")=?
rs("content")=?
rs.update
rs.close
set rs=nothing
带参数的SQL语句的优点:不用关心语句的单引号的问题了
,令外可以有效的防止SQL注入的非法入侵,这样写程序在编译的时候就把那语句编译了,不会与其它字符匹配了,这就是防止SQL注入的问题了,
唯一的缺点就是占用系统资源的问题了,因为它是早被预编译好的东西,所以系统在调用的时候是直接使用的,不需要再次进行对SQL语句进行编译了,如果项目小的话,少量的这样的代码可以不用计较资源的问题了 参考技术B 参考
ACCESS的参数化查询
http://hi.baidu.com/lz0830/blog/item/51cce73bde315be215cecb81.html
MyBatis 中SQL语句怎么样使用两种类型的参数带条件查询
具体意思就是需要两表连接查询,但是条件与两个表的列名都相关。
最简单的直接设置resultType=“map”,得到的就是一个List<Map<String,Object>>每一个Map的key就是查询结果的列名,也就是表的字段名。当然sql语句中最好as一下
复杂一点可以自定义一个resultMap标签
<resultMap id="result" type="java.util.Map">
<result property="c1" column="column1"/>
<result property="c2" column="column2"/>
</resultMap>
其中result可以自定义,select标签中的resultMap="result",和上面的resultMap标签的id对应
property设置的是自定义的字段名称,也就是结果集中每一个Map的key
column设置查询结果的字段名称
然后通过
for(List<Map<String,Object> map:list)
map.get("c1");//获取c1对应的字段的值
。。。
参考技术A 在ibatis配置文件写sql语句的时候对于一些比如“<”,">","<>","&","
'
","
"
"是不能够识别的,并且会抛异常。
一般可以如下改写:
<
<
>
>
<>
<>
&
&
'
'
"
"
以上是关于带参数的sql语句!不懂的主要内容,如果未能解决你的问题,请参考以下文章