zoukankan      html  css  js  c++  java
  • JDBC操作MySQL数据库案例

    JDBC操作MySQL数据库案例

     1 import java.sql.Connection;
     2 import java.sql.DriverManager;
     3 import java.sql.PreparedStatement;
     4 import java.sql.ResultSet;
     5 import java.sql.Statement;
     6 
     7 import org.junit.Test;
     8 
     9 public class JDBCTest {
    10     @Test
    11     public void test() throws Exception {
    12         Connection con = null;//定义引用
    13         Statement stmt = null;
    14         ResultSet rs = null;
    15         //规范的代码格式,try catch finally
    16         try {
    17             String driverClassName = "com.mysql.jdbc.Driver";
    18             String url = "jdbc:mysql://localhost:3306/exam";
    19             String username = "root";
    20             String password = "123";
    21             
    22             Class.forName(driverClassName);                                //加载
    23             con = DriverManager.getConnection(url, username, password);    //连接
    24             stmt = con.createStatement();                                //可以理解为创建SQL语句发射器
    25             
    26             //executeUpdate方法,可以执行增删改语句(INSERT, UPDATE, DELETE),返回被改变的记录条数
    27             String sql="DELETE FROM stu";
    28             int r = stmt.executeUpdate(sql);            
    29             System.out.println("共删除了"+r+"条记录!");         
    30             
    31             //executeQuery方法,用于执行查询操作(SELECT),返回结果集
    32             String sql2="select * from emp";
    33             rs = stmt.executeQuery(sql2);                
    34             while(rs.next()) {                            //把光标向下移动一行,并判断下一行是否存在!
    35                 int empno = rs.getInt(1);                //通过列编号来获取该列的值!
    36                 String ename = rs.getString("ename");    //通过列名称来获取该列的值
    37                 double sal = rs.getDouble("sal");
    38                 System.out.println(empno +  ", " + ename + ", " + sal);
    39             }
    40         } catch(Exception e) {
    41             throw new RuntimeException(e);
    42         } finally {
    43             // 一定要关闭!!!!!!
    44             if(rs != null) rs.close();
    45             if(stmt != null) stmt.close();
    46             if(con != null) con.close();
    47         }
    48     }
    49     @Test
    50     /**
    51      * 预处理方式
    52      * 优点:灵活,效率高,防SQL攻击
    53      * SQL攻击例子:
    54      *   若:sql = "select * from t_user where username='" + username + "' and password='" + password + "'";
    55      *   username = "a' or 'a'='a";
    56      *     password = "a' or 'a'='a";
    57      *     最后拼成的语句为:
    58      *  select * from t_user where username='a' or 'a'='a" and password='a' or 'a'='a'
    59      *  永远为true。
    60      */
    61     public void test2() throws Exception {
    62         Connection con = null;//定义引用
    63         ResultSet rs = null;
    64         PreparedStatement pstmt=null;
    65         try {
    66             String driverClassName = "com.mysql.jdbc.Driver";
    67             //mysql默认预处理是关闭的,加上这两个参数之后可以开启预处理
    68             String url = "jdbc:mysql://localhost:3306/exam?useServerPrepStmts=true&cachePrepStmts=true";
    69             String username = "root";
    70             String password = "123";
    71             Class.forName(driverClassName);                                
    72             con = DriverManager.getConnection(url, username, password);    
    73             
    74             String sql="select * from emp where empno=? and job=?";
    75             pstmt = con.prepareStatement(sql);
    76             pstmt.setInt(1, 1001);
    77             pstmt.setString(2, "文员");
    78             rs =pstmt.executeQuery();
    79             if(rs.next())
    80             {
    81                 System.out.println(rs.getString("ename"));
    82             }
    83         } catch(Exception e) {
    84             throw new RuntimeException(e);
    85         } finally {
    86             if(rs != null) rs.close();
    87             if(pstmt != null) pstmt.close();
    88             if(con != null) con.close();
    89         }
    90     }
    91 }
    View Code
  • 相关阅读:
    C#中的Singleton模式
    C#中的TemplateMethod模式
    从汉堡加料说起——浅谈C#中的Decorator模式
    轻松实现记录与撤销——C#中的Command模式
    分布式系统一致性问题与Raft算法(上)
    Scala函数式编程(五) 函数式的错误处理
    Spark RPC框架源码分析(三)Spark心跳机制分析
    AnalyticDB实现和特点浅析
    java并发编程 --并发问题的根源及主要解决方法
    数据的存储结构浅析LSM-Tree和B-tree
  • 原文地址:https://www.cnblogs.com/fengmingyue/p/6040463.html
Copyright © 2011-2022 走看看