JDBC 对数据库内容进行更改

package peparestatement;


import org.junit.Test;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;

/*
*实现对数据表的 增删改查 操作
*
*
*
*
**/
public class PreparedStatementUpdateTest {
    //向customers表中添加一个数据
    @Test
    public void testInsert()throws IllegalAccessException, InstantiationException, ClassNotFoundException, SQLException {
        Class clazzz = Class.forName("com.mysql.jdbc.Driver");          //使用全类名
        Driver driver =(Driver) clazzz.newInstance();

        Properties info = new Properties();
        String url = "jdbc:mysql://localhost:3306/crashcourse?serverTimezone=GMT%2B8";
        info.setProperty("user","vango");
        info.setProperty("password","kuai8686");

        Connection conn = driver.connect(url,info);
      //  System.out.println(conn);
        String sql = "insert into customers(cust_id,cust_name,cust_address)values(?,?,?)";
        PreparedStatement ps = conn.prepareStatement(sql);
        ps.setInt(1,999);//填充字符?
        ps.setString(2,"duxiaokai");
        ps.setString(3,"street john");
        //执行操作
        ps.execute();

        //资源的关闭
        ps.close();
        conn.close();
    }
}

学习期间出现过的问题一

insert into **customers**这里报错,但数据库通过下面这个语句也显示连接上了啊
  System.out.println(conn);

其实问题很简单,只需要将项目那里的数据库连接上即可。
之后还会出现提示
数据库提示
问题二
之后又写了一个通用增删改查的函数

 /*测试通用方法*/
    @Test
    public  void testCommonUpdate() throws SQLException {
        String sql = "insert into customers(cust_id,cust_name,cust_address)values(?,?,?)";
        updateTable(sql,"999","dukai","dongjing");
    }
    /*通用的增删改 方法*/
    /*可形参,多个数值会被当作数组传入。sql语句中有几个占位符,这个args的数组长度为多少*/
    @Test
    public void updateTable(String sql,Object ...args) throws SQLException {
        Connection conn = null;
        PreparedStatement ps = null;
        try {
            /*获取数据库连接*/
            conn = JDBCUtiles.getConnection();
            /*预编译sql语句*/
            ps = conn.prepareStatement(sql);
            /*填充占位符*/
            for(int i = 0;i<args.length;i++){
                ps.setObject(i+1,args[i]);
            }
            /*执行操作*/
            ps.execute();
        } catch (Exception e) {
            e.printStackTrace();
        }
        /*关闭资源*/
        JDBCUtiles.closeResource(conn,ps);
    }

但在测试运行过程中提示**

Method updateTable should have no parameters**

解决
@Test不能有返回值和参数。只需将测试方法前的@Test去掉即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值