execute()\executeUpdate()\executeQuery()方法返回值的探究

/说明:本实验探究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)不符合约束条件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值