/说明:本实验探究extecute()\executeupdate()\executeQuery()什么情况抛出异常以及正常情况下返回值区别的探究/
package 应用研发;import java.sql.*;public class execute操作返回值探究 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");String userMySql="root";String passwordMySql="";String urlMySql = "jdbc:mysql://localhost:3306/test?user="+userMySql+"&password="+passwordMySql + "&useUnicode=true&characterEncoding=utf-8"; Connection connection = DriverManager.getConnection(urlMySql,userMySql,passwordMySql);Statement stmt=connection.createStatement();/*说明:本实验探究extecute()\executeupdate()\executeQuery()什么情况抛出异常以及正常情况下返回值区别的探究*//*第一部分:探究execute()的返回值含义:返回布尔值*/String sql1="select * from student where sno='1';";boolean i=stmt.execute(sql1);System.out.println("无此sno时查询时:execute返回结果为:"+i);//true;数据库MySQL未报错,即不抛出异常/*String sql2="select * from student1 where sno='1';";boolean j=stmt.execute(sql2);System.out.println("查询无此人的时候:execute返回结果为:"+j);//表不存在数据库MySQL报错(ERROR),也抛出异常*/ /*String sql3="select * student where sno='1';";boolean a=stmt.execute(sql3);System.out.println("查询无此人的时候:execute返回结果为:"+a);//语法错误,数据库MySQL报错,也抛出异常*/ /*String sql4="insert into student values('1','w');";boolean j=stmt.execute(sql4);System.out.println("insert语法错误时:execute返回结果为:"+j);//插入语法错误,数据库MySQL报错,也抛出异常*/String sql5="insert into student values('2','w','2');";boolean j=stmt.execute(sql5);System.out.println("不是查询语句时:execute返回结果为:"+j);/*总结一:execute方法的返回值仅仅用来区分有没有返回集,即是不是使用了查询语句。是修改语句才返回false,错误语句是抛出异常而不是返回false;*//*第二部分:探究executeUpdate()的返回值含义:返回作用行数的探究*/String sql6="insert into student values('12345','w','2');";int a=stmt.executeUpdate(sql6);System.out.println("语法错误时作用的行数:"+a);//插入语法错误,数据库MySQL报错,也抛出异常;//违反约束条件时数据库也报错,也抛出异常/*实验总结:无论execute()还是exectuteUpdate()方法,只要数据库MySQL报错,则必然在Java中抛出异常。:若不报错:execute返回布尔值区分是查询语句还是数据修改语句(有无返回ResultSet)executeUpdate()返回作用的行数,可以为0;executeQuery()返回查询的结果集ResultSet*//*数据库操作报错(抛出异常)的可能情况:1)表不存在2)语法错误3)不符合约束条件*/}}
实验总结:无论execute()还是exectuteUpdate()方法,
:只要数据库MySQL操作报错等价于Java执行错误,则必然在Java中抛出异常。
:若不报错:
execute返回布尔值区分是查询语句还是数据修改语句(有无返回ResultSet)
executeUpdate()返回作用的行数,可以为0;
executeQuery()返回查询的结果集ResultSet
数据库操作报错(抛出异常)的可能情况:
1)表不存在
2)语法错误
3)不符合约束条件