jdbc链接数据库mysql

package cn.itcast.demo2;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.junit.Test;

public class Demo2 {
    /*
     * 连接数据库,得到Connection就算成功!
     * 对数据库做增、删、改
     */
    @Test
    public void fun1() throws ClassNotFoundException, SQLException {
        /*
         * 一、得到Connection
         * 1. 准备四大参数
         * 2. 加载驱动类
         * 3. 得到Connection
         */
        // 准备四大参数
        String driverClassName = "com.mysql.jdbc.Driver";
        // jdbc协议的格式!jdbc:工商的名称:子协议(由工商自己来规定)
        // 对mysql而言,它的子协议结构://主机:端口号/数据库名称
        String url = "jdbc:mysql://localhost:3306/mydb3";
        String username = "root";
        String password = "123";
        
        // 加载驱动类
        Class.forName(driverClassName);
        // 使用DriverManager,以及省下的3个参数,得到Connection
        Connection con = DriverManager.getConnection(url, username, password);
        
        /*
         * 二、对数据库做增、删、改
         * 1. 通过Connection对象创建Statement
         * > Statement语句的发送器,它的功能就是向数据库发送sql语句!
         * 2. 调用它的int executeUpdate(String sql),它可以发送DML、DDL
         */
        // 1. 通过Connection得到Statement对象
        Statement stmt = con.createStatement();
        // 2. 使用Statement发送sql语句!
//        String sql = "INSERT INTO stu VALUES('ITCAST_0003', 'wangWu', 88, 'male')";
//        String sql = "UPDATE stu SET name='zhaoLiu', age=22, " +
//                "gender='female' WHERE number='ITCAST_0003'";
        String sql = "DELETE FROM stu";
        int r = stmt.executeUpdate(sql);
        System.out.println(r);
    }
    
    /**
     * 执行查询
     * @throws ClassNotFoundException 
     * @throws SQLException 
     */
    @Test
    public void fun2() throws ClassNotFoundException, SQLException {
        /*
         * 一、得到Connection
         * 二、得到Statement,发送select语句
         * 三、对查询返回的“表格”进行解析!
         */
        /*
         * 一、得到连接
         * 1. 准备四大连接参数
         */
        String driverClassName = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/exam";
        String username = "root";
        String password = "123";
        
        /*
         * 2. 加载驱动类
         */
        Class.forName(driverClassName);
        /*
         * 3. 通过省下的三个参数调用DriverManger的getConnection(),得到连接
         */
        Connection con = DriverManager.getConnection(url, username, password);
        
        /*
         * 二、得到Statement,执行select语句
         * 1. 得到Statement对象:Connection的createStatement()方法
         */
        Statement stmt = con.createStatement();
        /*
         * 2. 调用Statement的ResultSet rs = executeQuery(String querySql)
         */
        ResultSet rs = stmt.executeQuery("select * from emp");
        
        /*
         * 三、解析ResultSet
         * 1. 把行光标移动到第一行,可以调用next()方法完成!
         */
        while(rs.next()) {//把光标向下移动一行,并判断下一行是否存在!
            int empno = rs.getInt(1);//通过列编号来获取该列的值!
            String ename = rs.getString("ename");//通过列名称来获取该列的值
            double sal = rs.getDouble("sal");
            
            System.out.println(empno +  ", " + ename + ", " + sal);
        }
        
        /*
         * 四、关闭资源
         * 倒关
         */
        rs.close();
        stmt.close();
        con.close();//这个东东,必须要关,不关就死!
    }
    
    // 规范化
    @Test
    public void fun3() throws Exception {
        Connection con = null;//定义引用
        Statement stmt = null;
        ResultSet rs = null;
        try {
            /*
             * 一、得到连接
             */
            String driverClassName = "com.mysql.jdbc.Driver";
            String url = "jdbc:mysql://localhost:3306/exam";
            String username = "root";
            String password = "123";
            
            Class.forName(driverClassName);
            con = DriverManager.getConnection(url, username, password);//实例化
            
            /*
             * 二、创建Statement
             */
            stmt = con.createStatement();
            String sql = "select * from emp";
            rs = stmt.executeQuery(sql);
            
            rs.last();//把光标移动到最后一行
System.out.println(rs.getRow());
            rs.beforeFirst();
            
            /*
             * 三、循环遍历rs,打印其中数据
             * 
             * getString()和getObject()是通用的!
             */
//            while(rs.next()) {
//                System.out.println(rs.getObject(1) + ", " 
//                        + rs.getString("ename") + ", " + rs.getDouble("sal"));
//            }
            
            int count = rs.getMetaData().getColumnCount();
            while(rs.next()) {//遍历行
                for(int i = 1; i <= count; i++) {//遍历列
                    System.out.print(rs.getString(i));
                    if(i < count) {
                        System.out.print(", ");
                    }
                }
                System.out.println();
            }
            
        } catch(Exception e) {
            throw new RuntimeException(e);
        } finally {
            // 关闭
            if(rs != null) rs.close();
            if(stmt != null) stmt.close();
            if(con != null) con.close();
        }
        
    }
}

 

posted @ 2015-10-19 15:58  暗夜小精灵~~  阅读(179)  评论(0编辑  收藏  举报