zoukankan      html  css  js  c++  java
  • jdbc三种常见用法

    import java.sql.Connection;  
    import java.sql.DriverManager;  
    import java.sql.ResultSet;  
    import java.sql.SQLException;  
    import java.sql.Statement;  
      
    public class JDBC_Test {  
        // 创建静态全局变量  
        static Connection conn;  
      
        static Statement st;  
      
        public static void main(String[] args) {  
            insert();   //插入添加记录  
            update();   //更新记录数据  
            delete();   //删除记录  
            query();    //查询记录并显示  
        }  
          
        /* 插入数据记录,并输出插入的数据记录数*/  
        public static void insert() {  
              
            conn = getConnection(); // 首先要获取连接,即连接到数据库  
      
            try {  
                String sql = "INSERT INTO staff(name, age, sex,address, depart, worklen,wage)"  
                        + " VALUES ('Tom1', 32, 'M', 'china','Personnel','3','3000')";  // 插入数据的sql语句  
                  
                st = (Statement) conn.createStatement();    // 创建用于执行静态sql语句的Statement对象  
                  
                int count = st.executeUpdate(sql);  // 执行插入操作的sql语句,并返回插入数据的个数  
                  
                System.out.println("向staff表中插入 " + count + " 条数据"); //输出插入操作的处理结果  
                  
                conn.close();   //关闭数据库连接  
                  
            } catch (SQLException e) {  
                System.out.println("插入数据失败" + e.getMessage());  
            }  
        }  
          
        /* 更新符合要求的记录,并返回更新的记录数目*/  
        public static void update() {  
            conn = getConnection(); //同样先要获取连接,即连接到数据库  
            try {  
                String sql = "update staff set wage='2200' where name = 'lucy'";// 更新数据的sql语句  
                  
                st = (Statement) conn.createStatement();    //创建用于执行静态sql语句的Statement对象,st属局部变量  
                  
                int count = st.executeUpdate(sql);// 执行更新操作的sql语句,返回更新数据的个数  
                  
                System.out.println("staff表中更新 " + count + " 条数据");      //输出更新操作的处理结果  
                  
                conn.close();   //关闭数据库连接  
                  
            } catch (SQLException e) {  
                System.out.println("更新数据失败");  
            }  
        }  
      
        /* 查询数据库,输出符合要求的记录的情况*/  
        public static void query() {  
              
            conn = getConnection(); //同样先要获取连接,即连接到数据库  
            try {  
                String sql = "select * from staff";     // 查询数据的sql语句  
                st = (Statement) conn.createStatement();    //创建用于执行静态sql语句的Statement对象,st属局部变量  
                  
                ResultSet rs = st.executeQuery(sql);    //执行sql查询语句,返回查询数据的结果集  
                System.out.println("最后的查询结果为:");  
                while (rs.next()) { // 判断是否还有下一个数据  
                      
                    // 根据字段名获取相应的值  
                    String name = rs.getString("name");  
                    int age = rs.getInt("age");  
                    String sex = rs.getString("sex");  
                    String address = rs.getString("address");  
                    String depart = rs.getString("depart");  
                    String worklen = rs.getString("worklen");  
                    String wage = rs.getString("wage");  
                      
                    //输出查到的记录的各个字段的值  
                    System.out.println(name + " " + age + " " + sex + " " + address  
                            + " " + depart + " " + worklen + " " + wage);  
                  
                }  
                conn.close();   //关闭数据库连接  
                  
            } catch (SQLException e) {  
                System.out.println("查询数据失败");  
            }  
        }  
      
        /* 删除符合要求的记录,输出情况*/  
        public static void delete() {  
      
            conn = getConnection(); //同样先要获取连接,即连接到数据库  
            try {  
                String sql = "delete from staff  where name = 'lili'";// 删除数据的sql语句  
                st = (Statement) conn.createStatement();    //创建用于执行静态sql语句的Statement对象,st属局部变量  
                  
                int count = st.executeUpdate(sql);// 执行sql删除语句,返回删除数据的数量  
                  
                System.out.println("staff表中删除 " + count + " 条数据
    ");    //输出删除操作的处理结果  
                  
                conn.close();   //关闭数据库连接  
                  
            } catch (SQLException e) {  
                System.out.println("删除数据失败");  
            }  
              
        }  
          
        /* 获取数据库连接的函数*/  
        public static Connection getConnection() {  
            Connection con = null;  //创建用于连接数据库的Connection对象  
            try {  
                Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动  
                  
                con = DriverManager.getConnection(  
                        "jdbc:mysql://localhost:3306/myuser", "root", "root");// 创建数据连接  
                  
            } catch (Exception e) {  
                System.out.println("数据库连接失败" + e.getMessage());  
            }  
            return con; //返回所建立的数据库连接  
        }  
    }  

    preparestatement

    package com.serein.jdbc;  
      
    import java.sql.*;  
      
    public class preparedStatemetTest {  
      
        public static void main(String[] args) {  
              
            //检查命令行中是否够7个参数  
            if(args.length != 7) {  
                System.out.println("Parameter Error! Please Input Again!");  
                System.exit(-1);  
            }  
              
            //程序获取运行栈里的7个参数值  
            String name = args[0];    
            int age = 0;  
            try {  
                age = Integer.parseInt(args[1]);  
            } catch (NumberFormatException e) {  
                System.out.println("Parameter Error! Age should be Number Format!");  
                System.exit(-1);  
            }  
              
            String sex = args[2];  
            String address = args[3];  
            String depart = args[4];  
              
            int worklen = 0;  
            try {  
                worklen = Integer.parseInt(args[5]);  
            } catch (NumberFormatException e) {  
                System.out.println("Parameter Error! Worklen should be Number Format!");  
                System.exit(-1);  
            }  
              
            int wage = 0;  
            try {  
                wage = Integer.parseInt(args[6]);  
            } catch (NumberFormatException e) {  
                System.out.println("Parameter Error! Wage should be Number Format!");  
                System.exit(-1);  
            }  
              
            //创建PreparedStatement对象  
            PreparedStatement pstmt = null;  
            //创建连接对象  
            Connection conn = null;  
              
            //连接数据库,并插入数据  
            try {  
                //加载MySQL驱动实例,提供了两种方法,是等价的  
                Class.forName("com.mysql.jdbc.Driver");  
                //new oracle.jdbc.driver.OracleDriver();  
                  
                //建立连接  
                conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myuser", "root", "root");  
                  
                //使用PreparedStatement对象里来构建并执行SQL语句,7个问号代表7个字段预先要保留的值  
                pstmt = conn.prepareStatement("INSERT INTO staff(name, age, sex,address, depart, worklen,wage) VALUES (?, ?, ?, ?, ?, ?, ?)");  
                  
                //通过PreparedStatement对象里的set方法去设置插入的具体数值  
                pstmt.setString(1, name);  
                pstmt.setInt(2, age);  
                pstmt.setString(3, sex);  
                pstmt.setString(4,address );  
                pstmt.setString(5, depart);  
                pstmt.setInt(6, worklen);  
                pstmt.setInt(7, wage);    
                pstmt.executeUpdate();  
                  
                //插入成功提示  
                System.out.print("成功插入一条数据记录!");  
                  
            //捕获驱动加载失败异常      
            } catch (ClassNotFoundException e) {  
                e.printStackTrace();  
              
            //捕获SQL语句执行失败异常  
            } catch (SQLException e) {  
                e.printStackTrace();  
            //恢复变量初始值     
            } finally {  
                try {  
                    if(pstmt != null) {  
                        pstmt.close();  
                        pstmt = null;  
                    }  
                    if(conn != null) {  
                        conn.close();  
                        conn = null;  
                    }  
                //捕获SQL异常  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
    }  

    callablestatement

    package com.serein.jdbc;  
      
    import java.sql.*;  
      
    import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type;  
      
    public class procedureTest {  
          
        // 数据库连接  
        public static Connection getConnection() {   
            Connection conn = null;  
            try {  
                Class.forName("com.mysql.jdbc.Driver"); // 加载Mysql数据驱动  
                conn = DriverManager.getConnection(  
                        "jdbc:mysql://localhost:3306/myuser", "root", "root"); // 创建数据连接  
            } catch (Exception e) {  
                System.out.println("数据库连接失败");  
            }  
            return conn;  
        }  
          
        // 列出数据库中所有的存储过程名  
        public static void GET_AllProName(Connection con) {  
            try {  
                DatabaseMetaData md = con.getMetaData(); // 获得数据库的元数据  
                ResultSet resultSet = md.getProcedures(null, null, "%"); // 获得所有的存储过程的描述  
                System.out.println("数据库现有的存储过程名为:"); // 显示存储过程名,位于结果集的第三个字段  
                  
                while (resultSet.next()) {  
                    String procName = resultSet.getString(3);  
                    System.out.print(procName + "
    ");  
                }  
                  
                System.out.println();  
            } catch (SQLException e) {  
                e.printStackTrace();  
            }  
        }  
        //*/  
          
        // 调用存储过程  
        public static void CALL_Procedure(Connection con) throws Exception {  
            CallableStatement cst = null;      // CallableStatement是Statement的子类  
            System.out.println("开始执行存储过程");  
            try {  
                // 调用无参数的存储过程  
                cst = con.prepareCall("{call addStaff(?,?,?,?,?,?,?,?)}");   //8个?号作占位符  
                  
                //设置输入的参数值  
                cst.setString(1, "Tina");  
                cst.setInt(2, 23);  
                cst.setString(3, "W");  
                cst.setString(4, "Shanghai");  
                cst.setString(5, "Personnel");  
                cst.setInt(6, 1);  
                cst.setInt(7, 3000);  
                cst.registerOutParameter(8, Type.INTERNAL); //注册输出参数类型  
                cst.execute();  //执行  
                  
                int insertID = cst.getInt(8);   //获取输出的参数值  
                System.out.println("The last staff ID is :" + insertID);    //将输入的参数打印出来  
      
            } catch (SQLException e) {  
                e.printStackTrace();  
            } finally {  
                cst.close();      
            }  
            System.out.println("存储过程执行结束");  
        }  
          
        public static void main(String[] args) throws Exception{  
            Connection conn = null;  
            try {  
                conn = getConnection(); // 获得数据库连接  
                GET_AllProName(conn); // 列出数据库的所有存储过程名  
                CALL_Procedure(conn); // 调用存储过程  
            } catch (Exception e1) {  
                throw e1;  
            } finally {  
                conn.close(); // 关闭数据库连接  
            }  
      
        }  
      
    }  
  • 相关阅读:
    c++ --> 虚函数
    Algorithm --> 全排列
    Algorithm --> 矩阵链乘法
    STL --> set用法
    STL --> list用法
    Algorithm --> 最长公共子序列(LCS)
    Zookeeper使用实例——服务节点管理
    Zookeeper使用实例——分布式共享锁
    Zookeeper初探
    Java设计模式应用——备忘录模式
  • 原文地址:https://www.cnblogs.com/duanxz/p/3635021.html
Copyright © 2011-2022 走看看