带参数的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语句!不懂的主要内容,如果未能解决你的问题,请参考以下文章

查看带参数的sql语句

带参数的sql查询语句

不懂带人,你就自己干到死

关于C#中SQL查询语句的参数

idea 打印完整的Sql语句带参数

sql操作带参数的时候用下面的方法,但是如果某个参数为 空值的话会报错,应该怎么改?