• jdbc 接口的用法 Statement和PreparedStatement的区别!


    package cn.zhouzhou;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    
    import com.mysql.jdbc.PreparedStatement;
    
    /*一、接口的概念和想相关静态方法?--------建议自己去查手册!
     * 
     * 1.connection?
     * 接口 
     *      与特定数据库的连接(会话)。 执行SQL语句并在连接的上下文中返回结果。 
            该信息是用getMetaData方法获得的。 
        
     *2. Driver?    
     *     每个驱动程序类必须实现的接口。
     *     每个驱动程序都应该提供一个实现Driver接口的类。 
     *
     *5.DriverManager?
     *     用于管理一组JDBC驱动程序的基本服务。 
     *      DriverManager将尝试加载尽可能多的驱动程序,然后对于任何给定的连接请求,它会依次要求每个驱动程序尝试连接到目标URL。 
    
     3. Connection?
     *    与特定数据库的连接(会话)。 执行SQL语句并在连接的上下文中返回结果。
     *
     4.getConnection?
     *      尝试建立与给定数据库URL的连接。DriverManager的静态方法 返回值类型 Connection 
     *
     *6.Statement?
     *      创建一个 Statement对象,将产生 ResultSet对象具有给定类型,并发性和可保存性。 
     *      返回值类型是statement;
     *      execute方法查找名称与 methodName属性相同的方法,并调用目标方法。 
     * 
     *7.ResultSet?
     *        表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
     *        ResultSet对象保持一个光标指向其当前的数据行。
     *        getInt?
     *        将此 ResultSet对象的当前行中指定列的值作为Java编程语言中的 Array对象检索。
     *
     *8.设置SQL语句的执行平台?
     *        Connection con= DriverManager.getConnection(url,use,password)
     *        Statement  star=con.createStatemtn();
     *
     *9.对数据库的操作?
     *        1.int ------------->适用于 增删改! insert  update  delete
     *    int i= star.executeUpdate("");  
     *
     *        2.String -------------用于SQL查询语句 select
     *    String s="";
     *    ResultSet rs= star.excuteQuery(s);  执行SQL中的select查询
     *    while(rs.next()){----------------------->处理结果集,并获取每列数据。
     *        System.out.println(rs.getInt("id")+""+rs.getString("name")+"  "+rs.getDouble("price"));
    
     *}
     *10.结束资源?
     *        
     *        
     *二、SQL注入攻击简单的案
     *        换个接口,解决风险!preparestatement
     *        使用Statement接口 容易容易被注入攻击。
     *        Statement接口实现类,作用执行SQL语句,返回结果集 
     *        有一个子接口PreparedStatement  (SQL预编译存储,多次高效的执行SQL) 
     *  
     *        记着!使用PrepareStatement接口
     *        方法?
     *        PreparedStatement xx=con.prepareStatement(String sql) 
     *        
     *        
     *
     */
    public class JdbcDmo {
        public static void main(String[] args) throws Exception {
        //    run();            //数据库的注册、连接、设置语句执行平台、执行SQL语句、处理结果、结束资源。
            show();        
            
            
        }
    
        private static void show() throws Exception {
            Class.forName("com.mysql.jdbc.Driver");
            
            String url="jdbc:mysql://localhost:3306/qy66";
            String use="root";
            String password="root";
            Connection con01=DriverManager.getConnection(url, use, password);
            
        //    Statement star01=con01.createStatement(); 之前的statement接口
            
            String s="select * from shop";
        
            java.sql.PreparedStatement star01=con01.prepareStatement(s); //换个接口preparestatement
            
            
            ResultSet rs=star01.executeQuery(s);
            while (rs.next()) {
                System.out.println(rs.getInt(1)+"  "+rs.getString(2));
            }
            rs.close();
            star01.close();
            con01.close();
            
        }
    
        private static void run() throws Exception{
            Class.forName("com.mysql.jdbc.Driver");                            //1.注册 5.0版本后可以省略不写
            
            String url="jdbc:mysql://localhost:3306/qy66";                    //定义各自的  连接地址   用户名  密码    
            String use="root";
            String password="root";
            
            Connection con=DriverManager.getConnection(url, use, password);        //2.连接数据库
            System.out.println(con);                                            //3.打印的是地址!
            
            Statement a1=con.createStatement();
            System.out.println(a1);                                         //获得语句执行平台
            
            String a3="select * from shop";                                    //执行SQL中的select查询 【注意String】查询sql语句
            
            
            ResultSet rs= a1.executeQuery(a3);
            //while 可以获取数据库表格中的每一列数据!
            while (rs.next()) {
                System.out.println(rs.getInt("id")+""+rs.getString("name")+"  "+rs.getDouble("price"));
            }
            
            // insert  update delete 
            int a2=a1.executeUpdate("insert into shop(id,name,price)values (101,'003',5000)");//执行sql语句  int 适用于增删改
            System.out.println(a2);
            
            con.close();
            a1.close();
            rs.close();    
            
        }
        
    
    }
  • 相关阅读:
    pcntl_fork 导致 MySQL server has gone away 解决方案
    视频网站 阻止迅雷劫持下载
    推荐大家使用的CSS书写规范、顺序
    console对象
    js Math函数
    致13级师弟师妹关于校招的一些话
    UVA514 铁轨 Rails:题解
    SP1805 HISTOGRA
    洛谷 P4363 [九省联考2018]一双木棋chess 题解
    比赛:大奔的方案solution
  • 原文地址:https://www.cnblogs.com/ZXF6/p/10638826.html
Copyright © 2020-2023  润新知