首页 > 试题广场 >

下面有关jdbc statement的说法错误的是?

[单选题]
下面有关jdbc statement的说法错误的是?
  • JDBC提供了Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程
  • 对于PreparedStatement来说,数据库可以使用已经编译过及定义好的执行计划,由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象”
  • PreparedStatement中,“?” 叫做占位符,一个占位符可以有一个或者多个值
  • PreparedStatement可以阻止常见的SQL注入式攻击
1.Statement、PreparedStatement和CallableStatement都是接口(interface)。 
2.Statement继承自Wrapper、PreparedStatement继承自Statement、CallableStatement继承自PreparedStatement。 
3. 
Statement接口提供了执行语句和获取结果的基本方法; 
PreparedStatement接口添加了处理 IN 参数的方法; 
CallableStatement接口添加了处理 OUT 参数的方法。 
4. 
a.Statement: 
普通的不带参的查询SQL;支持批量更新,批量删除; 
b.PreparedStatement: 
可变参数的SQL,编译一次,执行多次,效率高; 
安全性好,有效防止Sql注入等问题; 
支持批量更新,批量删除; 
c.CallableStatement: 
继承自PreparedStatement,支持带参数的SQL操作; 
支持调用存储过程,提供了对输出和输入/输出参数(INOUT)的支持; 

Statement每次执行sql语句,数据库都要执行sql语句的编译 , 
最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement。 

PreparedStatement是预编译的,使用PreparedStatement有几个好处 
1. 在执行可变参数的一条SQL时,PreparedStatement比Statement的效率高,因为DBMS预编译一条SQL当然会比多次编译一条SQL的效率要高。 
2. 安全性好,有效防止Sql注入等问题。 
3.  对于多次重复执行的语句,使用PreparedStament效率会更高一点,并且在这种情况下也比较适合使用batch; 
4.  代码的可读性和可维护性。
发表于 2016-04-04 21:15:48 回复(32)
选择C
JDBC statement中的PReparedStatement的占位符对应着即将与之对应当值,并且一个占位符只能对应一个值,如果能对应多个就会引起混淆。sql语句是确定的,那么一个占位符必定只能对应一个值
发表于 2015-02-17 17:03:47 回复(2)
选C    JDBC statement中的PReparedStatement的占位符对应着即将与之对应当值,并且一个占位符只能对应一个值,如果能对应多个就会引起混淆。sql语句是确定的,那么一个占位符必定只能对应一个值
发表于 2016-01-08 14:58:36 回复(3)
 * 实现机制不同,注入只对SQL语句的准备(编译)过程有破坏作用,而PreparedStatement已经准备好了, 59  * 执行阶段只是把输入串作为数据处理,不再需要对SQL语句进行解析、准备,因此也就避免了SQL注入问题。
发表于 2015-11-26 09:19:14 回复(0)
?在sql中是占位符,只能有一个值代替
发表于 2015-08-18 20:19:25 回复(0)
一个占位符只能对应一个值

发表于 2021-12-15 10:44:20 回复(0)
?占位符,一个占位符对应一个值
发表于 2016-02-10 14:09:19 回复(0)
选C

占位符?只能占一个位
发表于 2018-06-28 10:15:59 回复(0)
1.Statement、PreparedStatement和CallableStatement都是接口(interface)。  2.Statement继承自Wrapper、PreparedStatement继承自Statement、CallableStatement继承自PreparedStatement。  3.  Statement接口提供了执行语句和获取结果的基本方法;  PreparedStatement接口添加了处理 IN 参数的方法;  CallableStatement接口添加了处理 OUT 参数的方法。  4.  a.Statement:  普通的不带参的查询SQL;支持批量更新,批量删除;  b.PreparedStatement:  可变参数的SQL,编译一次,执行多次,效率高;  安全性好,有效防止Sql注入等问题;  支持批量更新,批量删除;  c.CallableStatement:  继承自PreparedStatement,支持带参数的SQL操作;  支持调用存储过程,提供了对输出和输入/输出参数(INOUT)的支持;  Statement每次执行sql语句,数据库都要执行sql语句的编译 ,  最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement。  PreparedStatement是预编译的,使用PreparedStatement有几个好处  1. 在执行可变参数的一条SQL时,PreparedStatement比Statement的效率高,因为DBMS预编译一条SQL当然会比多次编译一条SQL的效率要高。  2. 安全性好,有效防止Sql注入等问题。  3.  对于多次重复执行的语句,使用PreparedStament效率会更高一点,并且在这种情况下也比较适合使用batch;  4.  代码的可读性和可维护性。
发表于 2018-03-15 07:41:36 回复(0)
因为PreparedStatement是经过预编译的,所以可以防止普通的sql注入攻击。
发表于 2018-03-06 18:33:58 回复(0)
使用PreparedStatement的好处是数据库会对sql语句进行预编译,下次执行相同的sql语句时,数据库端不会再进行预编译了,而直接用数据库的缓冲区,提高数据访问的效率,如果sql语句只执行一次,以后不再复用。 SQL注入 攻 击 只 对 Statement有效, 对 PreparedStatement 是无效的; PreparedStatement可以在传入sql后,执行语句前,给参数赋值,避免了因普通的拼接sql字符串语句所带来的安全问题,而且准备sql和执行sql是在两个语句里面完成的,也提高了语句执行的效率 比如单引号会给你加一个转义,加个斜杠。上面的sql语句在数据库里执行就是这样 select * from t_user where password='ddd\' or \'1\'=\'1';
发表于 2017-04-10 12:34:21 回复(0)
选C
说一下PreparedStatement和statement的比较,平时一般都用PreparedStatement,从以下三点分析:
1.PreparedStatement代码可读性好;
2.使用PreparedStatement,DB执行性能高;
3.PreparedStatement安全性高,可防止SQL注入。
编辑于 2016-10-12 15:21:43 回复(0)
选C
发表于 2014-12-30 15:19:31 回复(0)
1.Statement、PreparedStatement和CallableStatement都是接口(interface)。  
2.Statement继承自Wrapper、PreparedStatement继承自Statement、CallableStatement继承自PreparedStatement。  
3.  
Statement接口提供了执行语句和获取结果的基本方法;  
PreparedStatement接口添加了处理 IN 参数的方法;  
CallableStatement接口添加了处理 OUT 参数的方法。  
4.  
a.Statement:  
普通的不带参的查询SQL;支持批量更新,批量删除;  
b.PreparedStatement:  
可变参数的SQL,编译一次,执行多次,效率高;  
安全性好,有效防止Sql注入等问题;  
支持批量更新,批量删除;  
c.CallableStatement:  
继承自PreparedStatement,支持带参数的SQL操作;  
支持调用存储过程,提供了对输出和输入/输出参数(INOUT)的支持;  

Statement每次执行sql语句,数据库都要执行sql语句的编译 ,  
最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement。  

PreparedStatement是预编译的,使用PreparedStatement有几个好处  
1. 在执行可变参数的一条SQL时,PreparedStatement比Statement的效率高,因为DBMS预编译一条SQL当然会比多次编译一条SQL的效率要高。  
2. 安全性好,有效防止Sql注入等问题。  
3.  对于多次重复执行的语句,使用PreparedStament效率会更高一点,并且在这种情况下也比较适合使用batch;  
4.  代码的可读性和可维护性。
发表于 2019-08-15 11:04:56 回复(0)
“?” 叫做占位符,一个占位符可以有一个或者多个值
答:一个占位符只能有一个值
发表于 2018-09-24 22:11:36 回复(0)
占位符?只能占一个位
发表于 2018-09-21 22:28:20 回复(1)
1. Statement,PreparedStatement,CallableStatement 三个是接口interface。
2.三个接口的特点:
Statement接口提供了执行语句和获取结果的基本方法;
PreparedStatement接口添加IN参数的基本方法;
CallableStatement接口添加OUT参数的方法;
3.
Statement:普通的不带参的查询SQL;支持批量更新,批量删除;
PrepareStatement:可变参数的SQL,编译一次,多次执行,效率高;
安全性高,能够防止SQL注入等问题;
支持批处理更新,批量删除;
CallablePrepareStatement:继承自PrepareStatement,支持带参数SQL操作
支持调用存储过程,提供对输出和输入的支持
发表于 2018-09-08 19:37:26 回复(0)
?占位符应该只可以占一个值吧
发表于 2017-10-14 20:10:11 回复(0)
?不可以提供一个集合吗?
D中如果是这样 where id=?  我在?处填入 5 or 1=1 不是注入式攻击吗 不懂
发表于 2015-04-13 12:15:33 回复(3)
请问b错在哪
发表于 2024-03-22 18:08:11 回复(0)