JDBC入门

来源:互联网 发布:线切割切圆怎么编程 编辑:程序博客网 时间:2024/06/04 20:03
  • 什么是JDBC?

    使用java程序发送sql语句到数据库服务器端执行,这叫用到了JDBC技术!!!!
    jdbc是Oracle-Sun公司设计的一套专门用于java程序操作数据库的接口。

  • 使用jdbc发送sql条件

    连接mysql数据库:数据库主机端口数据库用户名数据库密码连接的数据库
  • 三种连接到JDBC的方法
    1.直接创建驱动类Driver对象
    2.使用驱动管理类,来管理我们的驱动程序,并获取连接
    3.将Driver实现类加载到我们的内存中,static代码块就会自动执行

演示:

public class DriverDemo {    private static String url="jdbc:mysql://localhost:3306/day20";    private static String user="root";    private static String password="123";    public static void main(String[] args) throws Exception {        // TODO Auto-generated method stub        //conn1();        //conn2();        conn3();    }    //直连    private static void conn1() throws Exception{        //创建一个驱动类对象Driver        Driver driver = new com.mysql.jdbc.Driver();        Properties info = new Properties();        info.setProperty("user", user);        info.setProperty("password", password);        Connection conn = driver.connect(url, info);        //打印这个连接对象,如果连接对象不为空,就说明我们已经成功获取到了连接对象        System.out.println(conn);    }    //使用驱动管理类,来管理我们的驱动程序,并获取连接    private static void conn2() throws Exception{        Driver driver = new com.mysql.jdbc.Driver();        DriverManager.registerDriver(driver);        Connection conn = DriverManager.getConnection(url, user, password);        //打印这个连接对象,如果连接对象不为空,就说明我们已经成功获取到了连接对象        System.out.println(conn);    }    //注册驱动,我们发现mysql驱动程序的Driver实现类已经帮我们在静态代码块中注册好了驱动,    //我们在此时只需要将Driver实现类加载到我们的内存中,static代码块就会自动执行,我们的驱动也就自动注册了    private static void conn3() throws Exception{        Class.forName("com.mysql.jdbc.Driver");        Connection conn = DriverManager.getConnection(url, user, password);        System.out.println(conn);    }}

执行DDL操作

public class StatementDemo {    private static String url="jdbc:mysql://localhost:3306/day20";    private static String user="root";    private static String password="123";    public static void main(String[] args) throws Exception {        //注册驱动        Class.forName("com.mysql.jdbc.Driver");        //通过驱动管理类连接        Connection conn = DriverManager.getConnection(url, user, password);        //创建语句执行者        Statement cs = conn.createStatement();        //创建需要执行的sql语句        String sql = "CREATE TABLE superman("+                "id INT,"+                "NAME VARCHAR(20),"+                "age INT"+                ");";        int exu = cs.executeUpdate(sql);        //打印一下影响的结果        System.out.println(exu);   //0        conn.close();        cs.close();    }}

执行DML操作

public class Demo2 {    /**     * @param args     * @throws SQLException      */    public static void main(String[] args) throws SQLException {        // TODO Auto-generated method stub        Connection conn = JDBCUtil.getConn();        Statement cs = conn.createStatement();        String sql="UPDATE superman SET NAME='战斗暴龙兽' WHERE id=1;";        int exu = cs.executeUpdate(sql);        System.out.println(exu);        String sql2="INSERT INTO superman VALUES(4,'可达鸭',50);";        int exu2 = cs.executeUpdate(sql2);        System.out.println(exu2);        JDBCUtil.close(conn, cs, null);    }}

执行DQL查询操作

public class Demo3 {    /**     * @param args     * @throws SQLException      */    public static void main(String[] args) throws SQLException {        // TODO Auto-generated method stub        Connection conn = JDBCUtil.getConn();        String sql="SELECT * FROM superman;";        Statement cs = conn.createStatement();        ResultSet eq = cs.executeQuery(sql);        while(eq.next()){            System.out.println(eq.getInt("id")+"--"+eq.getString("name")+"--"+eq.getInt("age"));        }        JDBCUtil.close(conn, cs, eq);    }}

PreparedStatement对象执行SQL操作

public class PreparedstateDemo {    /**     * @param args     * @throws Exception      */    public static void main(String[] args) throws Exception {        // TODO Auto-generated method stub        Connection conn = JDBCUtil.getConn();        String sql = "SELECT * FROM superman WHERE id=?;";        //获取预编译对象        PreparedStatement ps = conn.prepareStatement(sql);        //给问号赋值        ps.setInt(1, 2);        ResultSet eq = ps.executeQuery();        while(eq.next()){            System.out.println(eq.getInt("id")+"--"+eq.getString("name")+"--"+eq.getInt("age"));        }        String sq2 = "INSERT INTO superman VALUES(?,?,?);";        PreparedStatement ps2 = conn.prepareStatement(sq2);        //给问号赋值        ps2.setInt(1, 5);        ps2.setString(2, "天地无用");        ps2.setInt(3, 200);        int i = ps2.executeUpdate();        System.out.println(i);        JDBCUtil.close(conn, ps, eq);        JDBCUtil.close(conn, ps2, eq);    }}

这种方法对sql注入有一定的防御能力。

CallableStatement对象执行存储过程

public class Demo {    public static void main(String[] args) {        //执行带有输入参数存储过程        //testIn();        //执行带有输出参数的存储过程        testOut();    }    private static void testOut() {        Connection conn  =null;        CallableStatement stmt = null;        ResultSet rs = null;        try{            conn = JDBCUtil.getConn();            String sql = "CALL pro_QueryNameById(?,?);";            stmt = conn.prepareCall(sql);            //给问号赋值            stmt.setInt(1, 2);            //如果存储过程带有输出参数的时候,首先需要注册,输出参数的类型            //void registerOutParameter(int parameterIndex,int sqlType)            stmt.registerOutParameter(2, java.sql.Types.VARCHAR);            //发送参数并执行sql            stmt.executeQuery();            //从stmt中取出输出参数的结果            System.out.println(stmt.getString(2));        }catch(Exception e){            e.printStackTrace();        }finally{            //释放资源            JDBCUtil.close(conn, stmt, rs);        }    }    private static void testIn() {        Connection conn  =null;        CallableStatement stmt = null;        ResultSet rs = null;        try{            conn = JDBCUtil.getConn();            String sql = "CALL pro_QueryById(?);";            stmt = conn.prepareCall(sql);            //给问号设置值            stmt.setInt(1, 2);            //发送参数并执行sql,只能调用excuteQuery()            rs = stmt.executeQuery();            if (rs.next()) {                System.out.println(rs.getInt(1)+"--"+rs.getString(2));            }        }catch(Exception e){            e.printStackTrace();        }finally{            //释放资源            JDBCUtil.close(conn, stmt, rs);        }    }}
原创粉丝点击