Javaweb数据库和java的交互

一、获取数据库连接的方法

① 导入mysql.jar包,此jar包提供了数据库和java进行连接的相关功能 

② 在web包下的WEB-INF包下,新建一个lib包,将准备好的mysql.jar包,放在lib包下,通过右键选择As a library,点击ok即可导入mysql.jar包,没有jar包的可以下载,通过maven库下载相关的jar包

③ 在src包下,新建util包用来存放工具类,新建test包用来存放测试类

④ 在util包下创建,JDBCUtil类

package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JDBCUtil {

    //步骤1:静态化加载数据库驱动
    //步骤2:创建一个static对外开放的方法,获取Connection链接

    static {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");//本质加载某个类的路径,就是mysql.jar包下的路径
        } catch (ClassNotFoundException e) {
            System.out.println("数据库驱动加载失败,原因是" + e );
        }
    }

    //获取数据库连接的方法
    public static Connection getConn(){                     //url地址是需要加上很多参数,目前用不上
        try {
            Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名", "数据库用户名", "数据库用户密码");
            return connection;
        } catch (SQLException e) {
            System.out.println("数据库链接获取失败,原因是:" + e);
            return null;
        }
    }
}
    //关闭数据库常用资源的方法
    public static void close(Connection conn, PreparedStatement pre, ResultSet rs){
        try {
            if (rs!=null){
                rs.close();
            }
            if (pre!=null){
                pre.close();
            }
            if (conn!=null){
                conn.close();
            }
        }catch (Exception e){
            System.out.println("资源关闭失败:"+e);
        }

在test包下,创建Test测试类,通过main()方法,执行System.out.println(JDBCUtil.getConn());语句,输出字符串地址表示连接成功

二、java获取数据库数据的方法

① 在src包下,新建dao包,用来存放java和数据库交换的类,命名为XxxDao

② 获取数据库数据的底层就是数据库数据的查询,所以我们需要写一个查询方法

    //查询所有数据
   public List<Userinfo> queryAll(){//表示将数据库的多行数据转成多个实体类组成的集合
       List<Userinfo> list = new ArrayList<Userinfo>();//存储数据的集合
       String sql = "select * from userinfo";//编写sql语句
       Connection conn = JDBCUtil.getConn();//获取数据库的连接
       PreparedStatement pre = null;
       try {
           pre = conn.prepareStatement(sql);//预编译sql语句
           ResultSet rs = pre.executeQuery();//rs存储了多条数据的结果集
            //rs.geXxx()方法,Xxx表示获取对应的值类型,方法表示获取数据库某一个字段的值,参数表示第几个字段
            while(rs.next()){//rs.next是否还有下条数据
                Userinfo userinfo = new Userinfo(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getInt(5),rs.getString(6));//将每一个字段的数据存储到实体类中
                list.add(userinfo);
            }
            return list;//返回数据库数据
       } catch (SQLException throwables) {
           System.out.println("查询sql编译失败" + throwables );
           return null;
       }finally{
            JDBCUtil.close(conn,pre,rs);//关闭资源流
        }
   }

通过实例化XxxDao,调用此方法即可获取数据库的数据,通过List集合接收返回值,执行System.out.println(集合名); 即可将数据库数据输出在控制台中,excuteQuery()方法,用于执行数据库中查询的sql语句

        //实例化dao类
        XxxDao xd = new XxxDao();
        //调用queryAll()方法,接收返回值
        List list = xd.queryAll();
        //输出在控制塔
        System.out.println(list);

三、java将数据存入数据库 

① 将java数据存入数据库底层是数据库数据的插入

    //添加一条数据
    public  boolean  add( Userinfo userinfo ){//表示是否添加成功
        String sql = "insert into userinfo values(null,?,?,?,?,?)";
        Connection conn = JDBCUtil.getConn();
        PreparedStatement pre = null;
        try {
            pre = conn.prepareStatement(sql);
            pre.setString(1,userinfo.getUsername());
            pre.setString(2,userinfo.getPassword());
            pre.setString(3,userinfo.getSex());
            pre.setInt(4,userinfo.getAge());
            pre.setString(5,userinfo.getLikes());
            int i = pre.executeUpdate();//返回受影响的行数
            if (i==1){
                return true;
            }else{
                return false;
            }
        } catch (SQLException throwables) {
            System.out.println("添加sql编译失败" + throwables );
            return false;
        }
    }

② 这里我们使用 ? 传参符,一个问号代表一个字段,通过Connection conn = JDBCUtil.getConn(); 获取数据库的连接,conn.prepareStatement(sql)方法是预编译sql语句,通过pre.set存储值的类型()方法,将数据存入数据库,第一个参数表示?传参符的位置,第二个参数是需要传入的值,通过方法的形参列表传入,executeUpdate()方法用于执行数据库中增、删和改的sql语句

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值