JDBC

本文详细介绍JDBC连接数据库的步骤,包括数据库语句拼接、预编译语句使用及批量执行,同时深入探讨了如何利用SavePoint进行事务处理,确保数据操作的一致性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                        JDBC分析

一、四步连接数据库:

           1、数据创建

                private static String url="jdbc:mysql://localhost:3306/DBname"
                private String username="root";
                private String password="123456";

           2、加载驱动:

                Class.forName("com.mysql.jdbc.Driver");

           3、创建连接对象:

                Connection con=DriverManager.getConnection(url, username,password);

           4、创建StateMent对象

                 Statement stmt=con.createStatement();

 

二、数据库语句的拼接使用

           1、String sql="select * from user where username=' "+username+" ' and

                 password=' "+password+" ' ";

                 ResultSet rs=stmt.executeQuery(sql);

三、预编译数据库语句

           1、采用PrepareStatement来申明stmt;

                 PreparedStatement ps=con.prepareStatement

                        (sql,Statement.RETURN_GENERATED_KEYS);

           2、不采用拼接的SQL语句

     String sql="insert into user(username,password,nick_name,qq)"+"values            

     (?,?,?,?)";

   3、为?传值

                  ps.setString(1, "zhangwei");
                  ps.setString(2, "123");
                  ps.setString(3, "焰");
                  ps.setString(4, "12345678");
                  ps.addBatch();

            4、执行SQL语句

                  ps.executeBatch();或者ps.executeQuery();//不能带有参数

            5、获取getGeneratedKeys的值(主键值)

                  ResultSet key=ps2.getGeneratedKeys();

                  取得ResultSet结果集中的值

                  while(key.next()){

                          String id=key.getInt(1);//我的主键为表的ID

                  }

四、事物的使用,一般来说数据库语句有一句就执行一句,但是有的情况下,当一个

        SQL语句出现异常的时候,其他的SQL语句就都要撤销操作,这时候我们就

        以使用事物来处理这种情况,这里面包含对SavePoint的使用。

           1、两段正确的数据库语句

            String sql="insert into user(username,password,nick_name,qq)"+"values

            (?,?,?,?)";
            PreparedStatement ps=con.prepareStatement

                   (sql,Statement.RETURN_GENERATED_KEYS);
            ps.setString(1, "zhangwei");
            ps.setString(2, "123");
            ps.setString(3, "焰");
            ps.setString(4, "12345678");
            ps.addBatch();
            ps.executeBatch();
   
           String SQL="insert into user(username,password,nick_name,qq)"+"values

                 (?,?,?,?)";
           PreparedStatement ps1=con.prepareStatement(SQL,

                Statement.RETURN_GENERATED_KEYS);
           ps1.setString(1, "zhang");
           ps1.setString(2, "123");
           ps1.setString(3, "xuan");
           ps1.setString(4, "12345678");
           ps1.addBatch();
           ps1.executeBatch();

        

          Savepoint aaa=con.setSavepoint("aaa");//设置保存节点

 

         2、一条错误的SQL语句

           String SQL2="insert into users(username,password,nick_name,qq)"+"values

                  (?,?,?,?)";
           PreparedStatement ps2=con.prepareStatement(SQL,   

                   Statement.RETURN_GENERATED_KEYS);
           ps2.setString(1, "zhang");
           ps2.setString(2, "123");
           ps2.setString(3, "xuan");
           ps2.setString(4, "12345678");
           ps2.addBatch();

           try{
                     ps2.executeQuery();
                     ResultSet key=ps2.getGeneratedKeys();
                     if(key.next())
                          System.out.println("key="+key.getInt(1));
               }catch(SQLException f){
                         System.out.println("bbbb");
                         con.rollback(aaa);//回滚
              }

             3、con.commit();//全局提交

          4、采用这种方法在创建连接的时候得设置

               con.setAutoCommit(false);

               不然一旦执行SQL语句就会自动提交

                 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值