JavaWeb学习

        最近在学习做javaweb项目,要求为:
        使用jsp+servlet+mysql完成一个学生信息的后台管理系统,数据表和前端页面自己设计,最少实现对数据表的增删改查,可进行扩展。
        因为是在假期时间,所以学习效率低了不少(我反省),这也导致了项目进度慢了不少。所以现在我恶补有关此方面的知识并且对其逐渐的有了些了解。
        jsp方面了解了一些标签及其使用方法,能够使用其做一些简单前端页面。
        servlet方面学会了如何获取表单信息以及其基本的使用。
        mysql方面知道了一些其基本语法,即增删改查语句。
        最让我闹心的便是在用java连接到数据库这一点,我看了许多有关此方面的视频,查阅了不少大佬的博客,最后得到了以下六个步骤:
        一:注册数据库的驱动。方法如下:在这里插入图片描述
        不过为了避免数据库驱动被重复注册,一般使用Class.forNmae()方法加载驱动类即可。
        二:通过DriverManager()类连接数据库,如上图所示第二个方法:getConnection(url,user,pwd)。
        三:通过Connection获取Statement对象。Connection接口常用方法如下
        四:通过Statement对象执行sql语句,方法如下:
在这里插入图片描述
        五:通过ResultSet对象操作结果集,
        六:关闭资源
        演示代码如下:

Connection conn=null;
  Statement sta=null;
  ResultSet res=null;
  try {
  //注册驱动
   Class.forName("com.mysql.jdbc.Driver");
   //连接数据库
   String url="jdbc:mysql://localhost:3306/studentbata";
   conn=DriverManager.getConnection(url,"root","lmr001214..");
   //获取Statement对象
   sta=conn.createStatement();
   String sql="select * from studenttable ";
   //获取结果
   res=sta.executeQuery(sql);

        记住这几个步骤后便开始尝试写项目,于是便遇到了以下问题,源代码如下:

//判断账号是否重复
  public boolean isRepet(String account) throws Exception 
  {
   boolean flag = false;
   System.out.println(flag);
   initConn();
   try {
    Statement sta=null;
    ResultSet res=null;
    String sql="select * from student where account='"+account+"'";
    sta=conn.createStatement();
    res=sta.executeQuery(sql);
    if(res==null)
    {
     flag= true;
     System.out.println(flag);
    }
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   finally
   {
    res.close();
    sta.close()
    conn.close();
   }
   return flag;
  }

        那么问题来了,经过测试,无论数据库中是否有输入的参数account,flag的结果都为false。我仔细检查了下,代码的逻辑是没有问题的,那么便只有一个结果,那便是res==null这个判断有问题。后来在看了看大佬们的博客,明白了!原来executeQuery(sql)方法返回包含给定查询所生成数据的 ResultSet 对象;永远不能为 null,如果没有查询到信息,返回一个next()为false的ResultSet 对象 。得知如此后,问题便迎刃而解了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值