声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 Statement:1.介绍:对数据库数据一系列的操作依赖于SQL语句,而Statement接口是用来执行SQL语句的,Statement对象需要通过Connection类里面的createStatement()方法进行创建。如下图: 先创建一个连接数据库的类,以后就不用再写这片代码了,直接调用此类里面的方法即可: ![image](http://os78f4hny.bkt.clouddn.com/201708280001.jpg?imageMogr2/blur/1x0/quality/75%7Cwatermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2xvdWRkbi5jb20vd2F0ZXJtYXJrLnBuZw==/dissolve/50/gravity/SouthEast/dx/10/dy/10%7Cimageslim)
创建Statement对象: ![image](http://os78f4hny.bkt.clouddn.com/201708280002.jpg?imageMogr2/blur/1x0/quality/75%7Cwatermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2xvdWRkbi5jb20vd2F0ZXJtYXJrLnBuZw==/dissolve/50/gravity/SouthEast/dx/10/dy/10%7Cimageslim)
2.执行SQL语句的方法:SQL语句大致可以分为DML(更新语句)和DQL(查询语句)两大类,Statement中分别有不同的方法操作这两类语句。 2.1 int executeUpdate(“SQL语句”):这个方法是用来执行更新语句的,如创建,修改,删除等,此方法的返回值为int类型,它反应的是影响的行数。使用案例如下图: ![image](http://os78f4hny.bkt.clouddn.com/201708280003.jpg?imageMogr2/blur/1x0/quality/75%7Cwatermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2xvdWRkbi5jb20vd2F0ZXJtYXJrLnBuZw==/dissolve/50/gravity/SouthEast/dx/10/dy/10%7Cimageslim)
可以在SQLyog工具中验证: ![image](http://os78f4hny.bkt.clouddn.com/201708280004.jpg?imageMogr2/blur/1x0/quality/75%7Cwatermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2xvdWRkbi5jb20vd2F0ZXJtYXJrLnBuZw==/dissolve/50/gravity/SouthEast/dx/10/dy/10%7Cimageslim)
注意:此代码只能运行一次,不能重复运行,否则会报错,因为运行一次后就有了mydb这个数据库,再运行一次就会再创建一个mydb数据库,发生重名。 2.2 ResultSetexecuteQuary(“SQL语句”):此方法是用来执行查询语句的,它的返回值的类型是一个ResultSet接口,之所以不用数组或集合来做返回值的类型,而用ResultSet做返回值的类型是因为如果用数组或集合的话,那就意味着查询时要一次性将数据查询出来,如果查询的数据少还好,可是如果查询的数据极其庞大呢,这就不利于数据库的优化了。而ResultSet是一个接口,具体实现代码由数据库开发商决定,数据库开发商可自行决定到底是一条一条的查询还是一次性查询等,这就给数据库开发商留有余地,有利于程序的优化。使用案例如下图: ![image](http://os78f4hny.bkt.clouddn.com/201708280005.jpg?imageMogr2/blur/1x0/quality/75%7Cwatermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2xvdWRkbi5jb20vd2F0ZXJtYXJrLnBuZw==/dissolve/50/gravity/SouthEast/dx/10/dy/10%7Cimageslim)
具体如何输出查询的内容可参照ResultSet和ResultSetMetaData的笔记。 3.批SQL执行:java中有一个批SQL执行的设计,也就是批量执行SQL语句,它设计的本意就是把我们在程序中写的SQL语句都先累积在一起,然后再一次性执行多条SQL语句,但实际上是一次性执行,还是一句一句的执行,还要看数据库开发商写的驱动类里面是怎样的,而我们也无需在意这些小细节,因为这不是我们关心的事情,我们只需要知道并会使用这个操作即可。 3.1 addBatch() 累加SQL语句 3.2 executeBatch() 批量执行SQL语句,其返回值的类型是数组类型,返回的是每条SQL语句影响的行数 3.3 clearBatch() 清除批SQL语句 3.4 代码实现(下面以插入为例): ![image](http://os78f4hny.bkt.clouddn.com/201708280006.jpg?imageMogr2/blur/1x0/quality/75%7Cwatermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2xvdWRkbi5jb20vd2F0ZXJtYXJrLnBuZw==/dissolve/50/gravity/SouthEast/dx/10/dy/10%7Cimageslim)
SQLyog验证结果如下: ![image](http://os78f4hny.bkt.clouddn.com/201708280007.jpg?imageMogr2/blur/1x0/quality/75%7Cwatermark/1/image/aHR0cDovL29zNzhmNGhueS5ia3QuY2xvdWRkbi5jb20vd2F0ZXJtYXJrLnBuZw==/dissolve/50/gravity/SouthEast/dx/10/dy/10%7Cimageslim)
4.提示:写SQL语句时,最好是现在SQLyog中写一遍看是否正确然后再复制到程序中去,因为如果在程序中是因为SQL语句写错了而报错,它是不会提示是什么错了,其报错的内容和在数据库中出错报错的内容一样。 |