package dao.impl;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import pojo.Lian;
import dao.UserDao;
public class UserDaoImpl implements UserDao {
//用于数据库连接
Connection conn=null;
//用于对结果的预处理
Statement st=null;
//用于处理结果集
ResultSet rs=null;
220
public boolean getConnection(){
String driver ="com.mysql.jdbc.Driver";//数据库的驱动!!
String url="jdbc:mysql://localhost:3306/zhou";//数据库的地址!!
String username="root";//表示用户名称
String password="zhou";//表示用户的密码
try {
//加载驱动类
Class.forName(driver);
//连接数据库
conn=DriverManager.getConnection(url,username,password);//表示要使用驱动以此来链接数据库
} catch (Exception e) {
e.printStackTrace();//catch作用是抓住异常
}
return true;
}
@Override
public List<Lian> getLian() {
List<Lian> list=new ArrayList<Lian>();//定义一个list类
String sql="select *from lian";//用sql语句创建一个查询
try {
if(this.getConnection()){//假如这个链接成功就将执行查询
//获取Statement对象执行sql语句
st=conn.createStatement();
//获取结果集
rs=st.executeQuery(sql);
while(rs.next()){
//查询出所有信息,取出rs对象中的各字段名下的内容,赋值给各变量
int id=rs.getInt("id");//使用get方法
String name=rs.getString("name");
String password=rs.getString("password");
int age=rs.getInt("age");
String iphone=rs.getString("iphone");
String address=rs.getString("address");
//System.out.println("id:"+id+"name:"+name+"password:"+password+"age:"+age+"iphone:"+iphone+"address:"+address);
Lian u=new Lian();
u.setId(id);
u.setName(name);
u.setPassword(password);
u.setAge(age);
u.setIphone(iphone);
u.setAddress(address);
list.add(u);
}
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
rs.close();//关闭数据库 避免浪费资源
st.close();//关闭statement
conn.close();//关闭链接
} catch (SQLException e) {
e.printStackTrace();
}
}
return list;//返回list类对象
}
@Override
public Lian add(Lian user) {
String sql="INSERT INTO lian (name,password,age,iphone,address)VALUES('"+user.getName()+"',"+user.getPassword()+",'"+user.getAge()+"','"+user.getIphone()+"','"+user.getAddress()+"')";
//利用sql语句实现list中数据的增加
if(this.getConnection()){
try {
st=conn.createStatement();
int i=st.executeUpdate(sql);//当数据更新时,i的值就被重新赋予
if(i>0){
System.out.println("添加数据成功!!!");
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
st.close();//关闭状态集
conn.close();//关闭链接
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return user;
}
@Override
public boolean update(Lian user) {//修改lian表中数据资料
String sql="update lian set name=?,password=?,age=?,iphone=?,address=? where id=?";
try {
if(this.getConnection()){
//预处理,对表链接成功与否进行判断
PreparedStatement ps=conn.prepareStatement(sql);
ps.setString(1, user.getName());// 通过函数方法对新的参数赋值 i
ps.setString(2,user.getPassword());
ps.setInt(3, user.getAge());
ps.setString(4, user.getIphone());
ps.setString(5, user.getAddress());
ps.setInt(6, user.getId());
ps.addBatch();
int i=ps.executeUpdate();//当数据被更改,i的值将被重新赋予
if(i>0){
System.out.println("嘿,哥们,你已经成功的更新数据了!!!");
return true;//提示数据更新成功
}else{
System.out.println("更新数据出错,再来一次???");
return false;//提示数据更新失败
}
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if(rs!=null){rs.close();}//关闭结果集
if(st!=null){st.close();}//关闭状态集
if(conn!=null){conn.close();}//关闭链接
} catch (SQLException e) {
e.printStackTrace();
}
}
return false;
}
@Override
public void delete(int id) {
String sql="delete from lian where id=?";
//使用sql语句删除lian类中的数据
try {
if(this.getConnection()){
PreparedStatement ps=conn.prepareStatement(sql);
ps.setInt(1, id);
//驱动将其值转化为sql整数类型值
int i=ps.executeUpdate();
if(i>0){
System.out.println("删除成功");
//提示删除成功
}
}
} catch (SQLException e) {
e.printStackTrace();
}
finally{
try {
rs.close();//关闭结果集
st.close();//关闭状态集
conn.close();//关闭链接
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//用户的登录
public Lian login(Lian user){
String sql="select name,password from lian";
//使用sql语句查询lian表中的姓名和密码数据
Lian us =new Lian();
//创建一个新lian表
if(this.getConnection()){
try {
st=conn.createStatement();
ResultSet rs=st.executeQuery(sql);
while(rs.next()){
String name=rs.getString("name");
String password=rs.getString("password");
us.setName(name);
us.setPassword(password);
return us;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return us;
}
//s根据编号来查询
@Override
public Lian findById(String usrId) {
String sql="select * from lian where id =" +usrId;
Lian u=null;
try {
u=new Lian();
if(this.getConnection()){
//获取Statement对象执行sql语句
st=conn.createStatement();
//获取结果集
rs=st.executeQuery(sql);
while(rs.next()){
//查询出所有信息,括号里面对应的是数据库表的字段名,也就是实体类的名字
int id=rs.getInt("id");
String name=rs.getString("name");
String password=rs.getString("password");
int age=rs.getInt("age");
String iphone=rs.getString("iphone");
String address=rs.getString("address");
//System.out.println("id:"+id+"name:"+name+"password:"+password+"age:"+age+"iphone:"+iphone+"address:"+address);
u.setId(id);
u.setName(name);
u.setPassword(password);
u.setAge(age);
u.setIphone(iphone);
u.setAddress(address);
}
System.out.println(u.getName()+u.getAddress());
}
return u;
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
rs.close();
st.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return u;
}
}
/*public static void main(String[] args) {
UserDao u=new UserDaoImpl();
Lian p=new Lian();
p.setName("zhou");
p.setPassword("12456");
u.login(p);
// p.setId(5);
// p.setAddress("九华山");
// p.setAge(24);
// p.setIphone("1345687912");
// p.setName("sanye");
// p.setPassword("123456");
//
// u.add(p);
//u.update(p);
//u.delete(5);
// List list=u.getLian();
//
// for (Lian lian : list) {
//
// System.out.println(lian.toString());
// }
//
}*/