java-jdbc笔记:基础SQL语句

本文介绍了如何在Java中使用PreparedStatement执行SQL语句,包括增删改操作,并探讨了事务管理的重要性。通过设置自动提交为false来开启手动事务控制,展示了在事务中如果出现错误,所有操作将不会提交。同时提醒读者注意,MySQL的InnoDB存储引擎才支持事务。
摘要由CSDN通过智能技术生成
public class TestJAddPreparedStatement {
//    Statement是用于执行SQL语句的,比如增加,删除
//    s.execute执行sql语句
//    执行成功后,用mysql-front进行查看,明确插入成功

//    数据库的连接是有限资源,相关操作结束后,养成关闭数据库的好习惯
//            先关闭Statement
//    后关闭Connection

    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.cj.jdbc.Driver");

        Connection conn = DriverManager.getConnection(
                "jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8",
                "root", "123");

        // 准备sql语句
        // 注意: 字符串要用单引号'
        //增
        String sql = "insert into userInfo values(?,?,?)";
        //删
		//  String sql = "delete from userInfo where id = 5";
        //改
		// String sql = "update userInfo set name = 'name 5' where id = 3";
       
         // 根据sql语句创建PreparedStatement
         PreparedStatement ps = conn.prepareStatement(sql);

        // 设置参数.第几个问号就数字几
        ps.setInt(1, 6);
        ps.setString(2, "wdd");
        ps.setString(3, "451263");
        // 执行
        ps.execute();

        ps.close();
        conn.close();
    }
}
//    在事务中的多个操作,要么都成功,要么都失败
//    通过 c.setAutoCommit(false);关闭自动提交
//    使用 c.commit();进行手动提交
//    在22行-35行之间的数据库操作,就处于同一个事务当中,要么都成功,要么都失败
//    所以,虽然第一条SQL语句是可以执行的,但是第二条SQL语句有错误,其结果就是两条SQL语句都没有被提交。 除非两条SQL语句都是正确的。
//----------------------------------------------------------------------------------------------
//    在Mysql中,只有当表的类型是INNODB的时候,才支持事务,所以需要把表的类型设置为INNODB,否则无法观察到事务.
//    修改表的类型为INNODB的SQL:
//    alter table hero ENGINE  = innodb;

//    查看表的类型的SQL
//
//    show table status from how2java;
//    不过有个前提,就是当前的MYSQL服务器本身要支持INNODB,如果不支持,请看 开启MYSQL INNODB的办法
public static void main(String[] args) {
    try {
        Class.forName("com.mysql.cj.jdbc.Driver");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

    try (
            Connection conn = DriverManager.getConnection(
                    "jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8",
                    "root", "123456");
             Statement s = conn.createStatement();) {

            // 有事务的前提下
            // 在事务中的多个操作,要么都成功,要么都失败

            conn.setAutoCommit(false);

            // 加血的SQL
            String sql1 = "update userinfo set uid = uid +1 where uid = 4";
            s.execute(sql1);

            // 减血的SQL
            // 不小心写错写成了 updata(而非update)

            String sql2 = "updata userinfo set uid = uid -1 where id = 4";
//            String sql2 = "update userinfo set uid = uid -1 where uid = 4";
            s.execute(sql2);

            // 手动提交
           conn.commit();

    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值