前后端连接(BootStrap_MySQL_MyEclipse)

    今天学了前后台的连接。之前脑子一团浆糊,就连后端对数据库的操作都不熟。就一点点来写吧,会多少写多少,错了以后再改吧,可能进步比较慢,但肯定会慢慢好起来的。

    以前一直对数据库连接就不太懂。先从数据库连接写起。

疑问点1:之前就是不明白为什么要有一个con,而且还是Connection类型的,

   理解:你想对数据库操作,肯定的先连上数据库吧,那就得用一个变量来告诉别人,连接情况是啥,到底连没连 上,刚开始肯定是null的呀,连上了还写啥。至于Connection,还是不太清楚,可能只有这样的类型才能获取连接吧

疑问点2:Class.forName("com.mysql.jdbc.Driver");都说是加载驱动类,怎么加载的不太清楚。

   理解:Class.forName动态加载指定的JDBC驱动,由DriverManager管理。DriverManager类用来管理数据库中的所有驱动程序,是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动程序之间建立连接。(别人说的)

然后用这个con=(Connection)DriverManager.getConnection(url, user, password);就连上了呗。数据库连接就勉强过关吧,以后工作了也许会有更深的理解,暂时都能连上了,就先不考虑了。

 

 

 

然后就出现一个很大的误区,数据库里不是有张表格嘛是这样的

然后我在后台也写了个这个

 

这下好了,我一直以为我对这些类里属性操作的就是对后台操作,(我可能是个傻子)

 

UserDao里是这样(我一直不明白为什么加个这个玩意,别人说是为了简单方便,我先这么理解吧)

package com.user.dao;

import java.util.List;
import com.user.entity.User;

public interface UserDao {
 public boolean isExist(String username,String password);//判断用户名和密码是否正确
 public boolean add(User user);
 public List<User> selectAll();
 public boolean delete(int uid);
 public User selectByUid(int uid);
 public boolean update (User user);
 //List<User> list=udi.mohuselect(namecondition);
 public List<User> mohunameselect(String namecondition);
 public List<User> mohuageselect(int minage,int maxage);
 public List<User> mohuadressselect(String adresscondition);
 public List<User> mohusexselect(String sexcondition);
}

UserDaoImp类是这样

DBCon db=new DBCon();
 //4个数据库连接对象
 Connection con=null;
 Statement stmt=null;//为了发送Sql语句
 PreparedStatement pstmt=null;//???
 ResultSet rs=null;//存放集合
 public void close()//这个方法跟理解没啥关系,就是为了关闭偷懒
 {
  try {
   if(rs!=null){
    rs.close();
   }
   if(pstmt!=null){
    pstmt.close();
   }
   if(stmt!=null){
    stmt.close();
   }
   if(con!=null){
    con.close();
   }
   
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 @Override
 public boolean isExist(String username, String password) {
  System.out.println("正在执行DAO中isExist方法");
  Boolean flag=false;
  try {
   con=db.getCon();
   if(con==null)
   {
    System.out.println("DAO中selectByName方法连接失败");
    return flag;
   }
   String sql="select * from tb_users where username=? AND password=?";//写了sql语句
   pstmt=(PreparedStatement) con.prepareStatement(sql);//???
   pstmt.setString(1, username);
   pstmt.setString(2, password);
   rs=pstmt.executeQuery();//这才是正八经将语句发给了mysql
   if(rs.next())//开始找有没有符合的
   {
    flag=true;
   }else{
    System.out.println("不能找到该人");
   }
   this.close();
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return flag;
 }

//困了,睡觉,不明白的是找是找到了,找到了,没点显示吗?在flag=ture那写个    System.out.println("找到该人");???我自己看到了有啥用,我想给页面跳到别的页面才行啊,嗯,明天再写写。

 

posted @ 2017-12-15 00:08  HlvM  阅读(4250)  评论(2编辑  收藏  举报