package cn.code.jdbc;

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

import org.junit.Test;

public class NumberFour {
    @Test
    /**
     * 操作元数据
     * */
     public void fun(){
         String url="jdbc:mysql://localhost:3306/mydb1";
         String driverclassname="com.mysql.jdbc.Driver";
         String user="root";
         String password="123";
         Connection con=null;
         Statement s=null;
         ResultSet r=null;
         try{
             con=DriverManager.getConnection(url, user, password);
             s= con.createStatement();//s =con.createStatement(int,int);这个方法用来控制结果集的三大属性是否可滚动、是否敏感、是否可更新
             String sql="select * from stu";
             r=s.executeQuery(sql);
             //获取元数据
             ResultSetMetaData rmd = r.getMetaData();
             //获取列数
             int count = rmd.getColumnCount();
             //遍历行
             while(r.next()){
                 for(int i =1;i<=count;i++){//遍历列
                    Object o = r.getObject(i);//获取每行第i列数据
                    System.out.print(o);
                     if(i<count){
                         System.out.print(",");
                     }
                 }
                 System.out.println();
             }
         }catch(SQLException e){
             throw new RuntimeException(e);
         }finally{
             if(r!=null)
                try {
                    r.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
             if(s!=null)
                try {
                    s.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
             if(con!=null)
                try {
                    con.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
         }
             
     }
}

 

package cn.code.data;

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 selectData {
    @Test
    public void fun() throws SQLException {
        Connection con =null;
        Statement s =null;
        ResultSet r =null;
        try{
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb1","root","123");
        s = con.createStatement();
        String sql="SELECT * FROM stu";
        r = s.executeQuery(sql);
        r.last();//把光标移动到最后一个行
        System.out.println(r.getRow());//显示当前光标所在行、间接获取到结果集行数
        r.beforeFirst();//光标返回首行之前一行,默认行;
        int cell = r.getMetaData().getColumnCount();//r.getMetaData()获取元数据ResultSetMetaData,获取列数;
            while(r.next()){
                for(int i=1;i<=cell;i++){      //遍历结果集
                    System.out.print(r.getString(i));
                    if(i<cell){System.out.print(",");}
                }
                System.out.println();
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            //关闭资源,倒关
            if(r!=null)r.close();
            if(s!=null)s.close();
            if(con!=null)con.close();//这个必须关
        }
        
    }
    
}