JDBC技术知识PreparedStat

白癜风症状图片 http://pf.39.net/bdfyy/bdfyw/180621/6344211.html

1、PreparedStatement概述

可以通过调用Connection对象的preparedStatement(Stringsql)方法获取PreparedStatement对象

PreparedStatement接口是Statement的子接口,它表示一条预编译过的SQL语句

PreparedStatement对象所代表的SQL语句中的参数用问号(?)来表示,调用PreparedStatement对象的setXxx()方法来设置这些参数.setXxx()方法有两个参数,第一个参数是要设置的SQL语句中的参数的索引(从1开始),第二个是设置的SQL语句中的参数的值

ResultSetexecuteQuery()执行查询,并返回该查询生成的ResultSet对象。

intexecuteUpdate():执行更新,包括增、删、该。

2、Statement的不足

(1)SQL拼接

(2)SQL注入

SQL注入是利用某些系统没有对用户输入的数据进行充分的检查,而在用户输入数据中注入非法的SQL语句段或命令,从而利用系统的SQL引擎完成恶意行为的做法。对于Java而言,要防范SQL注入,只要用PreparedStatement取代Statement就可以了。

(3)处理Blob类型的数据

BLOB(binarylargeobject),二进制大对象,BLOB常常是数据库中用来存储二进制文件的字段类型。

插入BLOB类型的数据必须使用PreparedStatement,因为BLOB类型的数据无法使用字符串拼接写的。

MySQL的四种BLOB类型(除了在存储的最大信息量上不同外,他们是等同的)

如果还是报错:xxxtoolarge,那么在mysql的安装目录下,找my.ini文件加上如下的配置参数:

max_allowed_packet=16M注意:修改了my.ini文件,一定要重新启动服务

实际使用中根据需要存入的数据大小定义不同的BLOB类型。需要注意的是:如果存储的文件过大,数据库的性能会下降。

CREATETABLE`user`(`id`int(11)NOTNULLAUTO_INCREMENT,`username`varchar(20)COLLATEutf8_unicode_ciDEFAULTNULL,`head_picture`mediumblob,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=3DEFAULTCHARSET=utf8COLLATE=utf8_unicode_ci;

package


转载请注明:http://www.aierlanlan.com/rzgz/2166.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了