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

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

疑问点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 selectAll();

public boolean delete(int uid);

public User selectByUid(int uid);

public boolean update (User user);

//List list=udi.mohuselect(namecondition);

public List mohunameselect(String namecondition);

public List mohuageselect(int minage,int maxage);

public List mohuadressselect(String adresscondition);

public List 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("找到该人");???我自己看到了有啥用,我想给页面跳到别的页面才行啊,嗯,明天再写写。

更多推荐

bootstrap操作mysql数据库_前后端连接(BootStrap_MySQL_MyEclipse)