韩银虎 2021-05-30 16:13 采纳率: 60%
浏览 17

JDBC框架 update方法的测试

package JDBCTemplate;

import org.junit.Test;
import utils.JDBCUtils;

import javax.sql.DataSource;


/**
 * 模拟Dao层
 */
public class JDBCTemplateTest {

    // 括号里要传递什么参数
    private JDBCTemplate template = new JDBCTemplate();

    @Test
    public void insert(){
        String sql = "INSERT INTO student VALUES(?,?,?,?)";
        Object[] params = {5,"周琦",27,"1997-02-20"};
        int result = template.update(sql, params);
        if (result != 0){
            System.out.println("添加成功");
        }else {
            System.out.println("添加失败");
        }
    }
}


package JDBCTemplate;

import utils.JDBCUtils;

import javax.sql.DataSource;
import java.sql.*;

/**
 * JDBC框架类
 */
public class JDBCTemplate {
    // 1.定义参数变量(数据源、连接对象、执行者对象、结果集对象)
    private DataSource dataSource;
    private Connection con;
    private PreparedStatement pst;
    private ResultSet rs;

    // 2.通过有参构造为数据源赋值
    public JDBCTemplate(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    // 3.定义update方法。参数:sql语句,Object类型的可变参数
    public int update(String sql, Object... objs) {
        // 4.定义int类型变量,用于接收增删改查后影响的行数
        int result = 0;
        try {
            // 5.通过数据源获取一个数据库连接
            con = dataSource.getConnection();

            // 6.通过数据库连接对象获取执行者对象,并对sql语句进行预编译
            pst = con.prepareStatement(sql);

            // 7.通过执行者对象获取参数的原信息对象
            ParameterMetaData parameterMetaData = pst.getParameterMetaData();

            // 8.通过参数源信息对象获取参数的个数
            int count = parameterMetaData.getParameterCount();

            // 9.帕努单参数数量是否一致
            if (count != objs.length) {
                throw new RuntimeException("参数个数不匹配");
            }

            // 10.为sql语句占位符赋值
            for (int i = 0; i < objs.length; i++) {
                pst.setObject(i + 1, objs[i]);
            }

            // 11.执行sql语句并接受结果
            result = pst.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 12.释放资源
            JDBCUtils.close(con, pst);
        }
        // 13.返回结果
        return result;
    }
}


这里要传递什么参数

视频里的参数我写不出来

求大神指点,谢谢

有回答 必采纳点赞

  • 写回答

1条回答 默认 最新

  • 关注

     

    // 2.通过有参构造为数据源赋值 public JDBCTemplate(DataSource dataSource) { this.dataSource = dataSource; }这个类的构造方法带了参数,所有你实例化这个类的对象时必须带参数,需要带一个数据源的参数进去才行。

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab中mjs用不了
  • ¥15 Ios抖音直播的时候如何添加自定义图片在直播间!
  • ¥60 riscv-pulpino总线上挂载axi从机
  • ¥15 ssh登录页面的问题
  • ¥50 关于在matlab上对曲柄摇杆机构上一点的运动学仿真
  • ¥15 jetson nano
  • ¥15 :app:debugCompileClasspath'.
  • ¥15 windows c++内嵌qt出现数据转换问题。
  • ¥15 stm32 串口通讯过程中的问题
  • ¥20 公众号如何实现点击超链接后自动发送文字