【mysql+java】捕获数据库中未查到数据进行异常处理

捕获数据库未查到数据异常处理

前言

        当用户查数据库中的表单以此验证表单中是否和即将要插入的数据重复,捕获重复的数据以此来统计重复数据的个数。
        此次博主要做的就是进行分析获取数据库中的数据查重,捕获异常(自定义异常譬如:将重复的数据作为异常处理),分析这个过程。

准备工作

  • 使用的数据库:mysql
  • 假设表单名是:user_list.jsp
  • 表单结构如下所示:
    在这里插入图片描述

思路分析

  • 连接数据库
  • 进行查表单操作
  • 判断自定义异常
  • 进行统计异常(这里博主要是统计重复的数据的条数)
  • 关闭数据库

流程图分析

在这里插入图片描述

代码分析

  • 连接数据库
        boolean ok=false; //成功操作则此标志转为true

		//用于记录查询电话号码是否已经被用过
		String s_id="",s_user_name="";

		//下面使用JNDI数据库连接池连接到MySQL服务器
		Connection my_con=null;
		try
		{
		 
		String my_dbdriver=com_station_datebase_driver; //MYSQL 5.0 用的JDBC驱动
		String my_url=com_station_datebase_url; //MYSQL数据库名为dqz_mysql_test
		String my_username=com_station_datebase_user;  //数据库管理用户
		String my_password=com_station_datebase_password; //数据库管理密码
		Class.forName(my_dbdriver); //装载驱动程序
		my_con=DriverManager.getConnection(my_url,my_username,my_password); //连接数据库

		  //建立远程视图
		  Statement my_stmt=my_con.createStatement();

		  err_code="0x01"; //成功执行到获取了远程视图

		  String my_sql;

		  //注意:因为SQL中规定字符串值(String变量或字符串常量)必须用单引号''括起来,
		  //所以下面的jsp程序中在SQL语句中传递的字符串不能使用双引号,而用了单引号。
		  //发送并执行SQL

        以上是连接数据库主要核心代码示例

  • 查询语句
         // 查询此用户名称是否存在
          my_sql="select id from user_list where user_name='"+in_user_name+"' limit 0,1";
 
		  //调试
		  //System.out.println("my_sql="+my_sql);

		  ResultSet my_rs=my_stmt.executeQuery(my_sql); //执行查询
		  err_code="0x02"; //成功执行了查询语句
 
		  ok=my_rs.next();
		  //System.out.println("ok="+ok);

        以上代码就是进行数据库查找语句的操作。

  • 判别存在重复数据与否

		  if(ok)
		  {
			my_rs.close(); //关闭结果集
			err_code="0x03_user_name"; //成功读取了结果集
			throw new Exception("『back::_self』用户名称【"+in_user_name+"】已经被序号注册使用,请查证后重新进行用户注册!");
			// 统计重复数据的个数
		  }
		  else
		  {
			  // 否则可以注册

			  // 添加新的用户
			  // my_sql="insert into user_list(user_name,password,tel,email,qq,note) values('"+in_user_name+"','"+in_password+"','"+in_tel+"','"+in_email+"','"+in_qq+"','"+in_note+"')";
			 
			 my_sql="insert into user_list(user_name,password,tel,email,qq,note,ssjf_id) values('"+in_user_name+"','"+in_password+"','"+in_tel+"','"+in_email+"','"+in_qq+"','"+in_note+"','"+s_ssjf_add_id2+"')";
		  
		  
			  //调试
			  //System.out.println("my_sql="+my_sql);
			  my_stmt.executeUpdate(my_sql); //执行插入语句
			  err_code="0x06"; //成功执行了插入语句
		  
			  //写入管理员日志
			  String login_IP=request.getRemoteAddr(); //获取登陆用户的IP地址
			  dqz_time t=new dqz_time(); //获取登录时间戳
			  
			  my_sql="insert into user_log(user_id,user_name,user_ip,log_info,type) values('"+session_user_id+"','"+session_user_name+"','"+login_IP+"','成功添加了用户【"+in_user_name+"】 ,电话号码【"+in_tel+"】','添加用户')";

			  my_stmt.executeUpdate(my_sql); //执行插入语句
			  err_code="0x07"; //成功执行了插入语句

			  //处理成功
			  ok=true;
		  }

         以上的代码是本文要说明的核心,在下面就是进行一个判断,重点是在为符合查重条件时就统计重复数据的个数,之前老师一直说如果不符合条件就抛出异常呀,老实说,我听懂老师要表达的意思,但是我不理解老师想要实现的方法是怎样的,什么是抛出异常呀?正如同下面代码就是抛出异常同时统计个数。

if(ok)
		  {
			my_rs.close(); //关闭结果集
			err_code="0x03_user_name"; //成功读取了结果集
			throw new Exception("『back::_self』用户名称【"+in_user_name+"】已经被序号注册使用,请查证后重新进行用户注册!");
			// 统计重复数据的个数
			i++;//这里我只是做一个演示,以此来统计个数
		  }
 

         而在符合条件时就执行else{}中的插入语句代码

说明

         此篇博文重点是在理解捕获异常,统计异常处理,对于用户来说,当然是看到最直观的前台页面显示异常的详细信息,而此次针对博主的需求是在理解这个捕获异常的思路,实现统计异常个数方法。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贾继康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值