企业实训第十四节
程序员文章站
2024-03-25 23:47:34
...
package com.zq.dao;
import java.util.List;
import com.zq.model.User;
public interface UserDao { public boolean login(String username,String pwd);
public List<User> list();
public boolean del(Integer id);
public boolean add(User user);
public boolean update(User user);
public User findById(Integer id);
}
package com.zq.dao;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;
import com.zq.model.User;
public class UserDaoImpl implements UserDao {
[@Override](https://my.oschina.net/u/1162528)
public boolean login(String username, String pwd) {
//写连接数据库,查询用户名密码是否正确的操作
Connection conn = null;
PreparedStatement pst = null;//因为最后需要关闭,所以写在最上面,不然try里面内容,
//Statement,但是不太常用,拼装带参数的sql比较麻烦
//finally里面调不到
ResultSet rs = null;
//1、引入具体的数据库jar包
try{
//2、注册/安装数据库的驱动程序/类
Class.forName("com.mysql.jdbc.Driver");
//3、创建数据库连接,连接数据库:哪个数据库、用户名、密码多少
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/myweb","root","");//机房的密码为空
//4、sql语句,并且对数据库执行下sql语句:查询返回结果、删除、更新
String sql = "select * from user where username = ? and pwd = ?";
pst = conn.prepareStatement(sql);
//穿进去用户名和密码
pst.setString(1, username);
pst.setString(2,pwd);
//5、如果是查询,需要获取查询结果
rs = pst.executeQuery();
//判断查询到的结果集里面是否有数据
if(rs.next()){//存的是0或者1条,所有获取结果集用的if,但是多条while,循环结果集里的数据
User user = new User();
//把结果集里取到的信息塞到user里
user.setId(rs.getInt(1));//按查询出来列的顺序取得,第1列是id,
//getString("username")这个username是数据库表的列名或者查询时取得别名
//select username as name from user;
user.setUsername(rs.getString("username"));//getString(2)
user.setPwd(rs.getString(3));
return true;
}else{
return false;
}
}catch(Exception e){
e.printStackTrace();
}finally{
//6、关闭数据库连接的这些对象,释放缓存
//倒着关闭,就是先建立的数据库连接connetction,那就最后关;最后建的结果集ResultSet,就应该最先关闭
try {
if(rs!=null){
rs.close();
}
if(pst!=null){
pst.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return false;
}
[@Override](https://my.oschina.net/u/1162528)
public List<User> list() {
//写连接数据库,查询用户名密码是否正确的操作
Connection conn = null;
PreparedStatement pst = null;//因为最后需要关闭,所以写在最上面,不然try里面内容,
//Statement,但是不太常用,拼装带参数的sql比较麻烦
//finally里面调不到
ResultSet rs = null;
//查询结果需要返回的数据,放在list里面
List<User> list = new ArrayList<User>();
//1、引入具体的数据库jar包
try{
//2、注册/安装数据库的驱动程序/类
Class.forName("com.mysql.jdbc.Driver");
//3、创建数据库连接,连接数据库:哪个数据库、用户名、密码多少
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/myweb","root","");//机房的密码为空
//4、sql语句,并且对数据库执行下sql语句:查询返回结果、删除、更新
String sql = "select * from user";//查询表里的所有数据,列表展示要用的
pst = conn.prepareStatement(sql);
//5、如果是查询,需要获取查询结果
rs = pst.executeQuery();
//判断查询到的结果集里面是否有数据
while(rs.next()){//存的是0或者1条,所有获取结果集用的if,但是多条while,循环结果集里的数据
User user = new User();
//把结果集里取到的信息塞到user里
user.setId(rs.getInt(1));//按查询出来列的顺序取得,第1列是id,
user.setUsername(rs.getString("username"));//getString(2)
user.setPwd(rs.getString(3));
//将从rs中循环出来的这一行数据放到list里面,
list.add(user);
}
}catch(Exception e){
e.printStackTrace();
}finally{
//6、关闭数据库连接的这些对象,释放缓存
//倒着关闭,就是先建立的数据库连接connetction,那就最后关;最后建的结果集ResultSet,就应该最先关闭
try {
if(rs!=null){
rs.close();
}
if(pst!=null){
pst.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;
}
[@Override](https://my.oschina.net/u/1162528)
public boolean del(Integer id) {
//写连接数据库,查询用户名密码是否正确的操作
Connection conn = null;
PreparedStatement pst = null;//因为最后需要关闭,所以写在最上面,不然try里面内容,
//Statement,但是不太常用,拼装带参数的sql比较麻烦
//finally里面调不到
ResultSet rs = null;
//1、引入具体的数据库jar包
try{
//2、注册/安装数据库的驱动程序/类
Class.forName("com.mysql.jdbc.Driver");
//3、创建数据库连接,连接数据库:哪个数据库、用户名、密码多少
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/myweb","root","");//机房的密码为空
//4、sql语句,并且对数据库执行下sql语句:查询返回结果、删除、更新
String sql = "delete from user where id = ?";
pst = conn.prepareStatement(sql);
//穿进去用户名和密码
pst.setInt(1, id);
//5、如果是查询,需要获取查询结果
int n = pst.executeUpdate();//执行更新操作,返回执行成功的数据条数
if(n>0){
return true;
}else{
return false;
}
}catch(Exception e){
e.printStackTrace();
}finally{
//6、关闭数据库连接的这些对象,释放缓存
//倒着关闭,就是先建立的数据库连接connetction,那就最后关;最后建的结果集ResultSet,就应该最先关闭
try {
if(rs!=null){
rs.close();
}
if(pst!=null){
pst.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return false;
}
[@Override](https://my.oschina.net/u/1162528)
public boolean add(User user) {
//写连接数据库,查询用户名密码是否正确的操作
Connection conn = null;
PreparedStatement pst = null;//因为最后需要关闭,所以写在最上面,不然try里面内容,
//Statement,但是不太常用,拼装带参数的sql比较麻烦
//finally里面调不到
ResultSet rs = null;
//1、引入具体的数据库jar包
try{
//2、注册/安装数据库的驱动程序/类
Class.forName("com.mysql.jdbc.Driver");
//3、创建数据库连接,连接数据库:哪个数据库、用户名、密码多少
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/myweb","root","");//机房的密码为空
//4、sql语句,并且对数据库执行下sql语句:查询返回结果、删除、更新
String sql = "insert into user(username,pwd) values(?,?)";
pst = conn.prepareStatement(sql);
//穿进去用户名和密码
pst.setString(1, user.getUsername());
pst.setString(2, user.getPwd());
//5、如果是查询,需要获取查询结果
int n = pst.executeUpdate();//执行更新操作,返回执行成功的数据条数
if(n>0){
return true;
}else{
return false;
}
}catch(Exception e){
e.printStackTrace();
}finally{
//6、关闭数据库连接的这些对象,释放缓存
//倒着关闭,就是先建立的数据库连接connetction,那就最后关;最后建的结果集ResultSet,就应该最先关闭
try {
if(rs!=null){
rs.close();
}
if(pst!=null){
pst.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return false;
}
[@Override](https://my.oschina.net/u/1162528)
public boolean update(User user) {
//写连接数据库,查询用户名密码是否正确的操作
Connection conn = null;
PreparedStatement pst = null;//因为最后需要关闭,所以写在最上面,不然try里面内容,
//Statement,但是不太常用,拼装带参数的sql比较麻烦
//finally里面调不到
ResultSet rs = null;
//1、引入具体的数据库jar包
try{
//2、注册/安装数据库的驱动程序/类
Class.forName("com.mysql.jdbc.Driver");
//3、创建数据库连接,连接数据库:哪个数据库、用户名、密码多少
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/myweb","root","");//机房的密码为空
//4、sql语句,并且对数据库执行下sql语句:查询返回结果、删除、更新
String sql = "update user set username = ?,pwd=? where id = ?";
pst = conn.prepareStatement(sql);
//穿进去用户名和密码
pst.setString(1, user.getUsername());
pst.setString(2, user.getPwd());
pst.setInt(3, user.getId());
//5、如果是查询,需要获取查询结果
int n = pst.executeUpdate();//执行更新操作,返回执行成功的数据条数
if(n>0){
return true;
}else{
return false;
}
}catch(Exception e){
e.printStackTrace();
}finally{
//6、关闭数据库连接的这些对象,释放缓存
//倒着关闭,就是先建立的数据库连接connetction,那就最后关;最后建的结果集ResultSet,就应该最先关闭
try {
if(rs!=null){
rs.close();
}
if(pst!=null){
pst.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return false;
}
@Override
public User findById(Integer id) {
//写连接数据库,查询用户名密码是否正确的操作
Connection conn = null;
PreparedStatement pst = null;//因为最后需要关闭,所以写在最上面,不然try里面内容,
//Statement,但是不太常用,拼装带参数的sql比较麻烦
//finally里面调不到
ResultSet rs = null;
//1、引入具体的数据库jar包
try{
//2、注册/安装数据库的驱动程序/类
Class.forName("com.mysql.jdbc.Driver");
//3、创建数据库连接,连接数据库:哪个数据库、用户名、密码多少
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/myweb","root","");//机房的密码为空
//4、sql语句,并且对数据库执行下sql语句:查询返回结果、删除、更新
String sql = "select * from user where id = ?";
pst = conn.prepareStatement(sql);
//穿进去用户名和密码
pst.setInt(1, id);
//5、如果是查询,需要获取查询结果
rs = pst.executeQuery();
//判断查询到的结果集里面是否有数据
if(rs.next()){//存的是0或者1条,所有获取结果集用的if,但是多条while,循环结果集里的数据
User user = new User();
//把结果集里取到的信息塞到user里
user.setId(rs.getInt(1));//按查询出来列的顺序取得,第1列是id,
//getString("username")这个username是数据库表的列名或者查询时取得别名
//select username as name from user;
user.setUsername(rs.getString("username"));//getString(2)
user.setPwd(rs.getString(3));
return user;
}else{
return null;
}
}catch(Exception e){
e.printStackTrace();
}finally{
//6、关闭数据库连接的这些对象,释放缓存
//倒着关闭,就是先建立的数据库连接connetction,那就最后关;最后建的结果集ResultSet,就应该最先关闭
try {
if(rs!=null){
rs.close();
}
if(pst!=null){
pst.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return null;
}
}
转载于:https://my.oschina.net/u/4090474/blog/3060889
上一篇: Word里面那些好看的流程图是怎么画出来的? 流程图办公软件绘图工具亿图
下一篇: UDP帧事件触发