package cn.code.jdbc;

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 NumberThree {
    /**
     * 使用jdbc完成对数据库的增删改查
     * */
    @Test
    public void update(){
        //url遵循jdbc协议,每种数据库的url各有不同
        /**
         * jdbc:sqlserver://IP地址:1433;DatabaseName=库名
         * jdbc:oracle:thin:@IP地址:1521:库名
         * */
        String url="jdbc:mysql://localhost:3306/mydb1";
        String user = "root";
        String password="123";
        String driverclassname="com.mysql.jdbc.Driver";
        Connection con =null;
        Statement statement=null;
        ResultSet r=null;
        try {
            Class.forName(driverclassname);
            try {
                con = DriverManager.getConnection(url, user, password);
                statement=con.createStatement();
                //String sql ="update stu set name='zhoujielun',age='37',gender='male' where number='itcast_0002'";
                String sql="insert into stu values('itcast_0980','diaosi','76','male')";
                //String sql ="delete from stu where number='itcast_0980'";
                int c = statement.executeUpdate(sql);//返回值为影响的行数
                System.out.println(c);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
    //查询
    @Test
    public void query(){
        String url="jdbc:mysql://localhost:3306/mydb1";
        String driverclassname="com.mysql.jdbc.Driver";
        String user ="root";
        String password="123";
        Connection con=null;
        Statement statement=null;
        ResultSet resultSet=null;
        try {
            Class.forName(driverclassname);
            try {
                con=DriverManager.getConnection(url, user, password);
                statement = con.createStatement();
                String sql="select * from stu";
                //必须是查询语句
                resultSet = statement.executeQuery(sql);
                /**
                 * 解析resultset
                 * resultset内有一个光标,默认位置beforeFirst(这是一个空位置)
                 * 通过ResultSet的next()方法可以把光标向下移动一行,第一次调用到first行
                 * 最后一行是afterLast,最后有效行Last;
                 * */
                while(resultSet.next()){
                    /**
                     * ResultSet提供了一系列的getXxx()方法
                     * getInt(第几列)/getInt("列名")
                     * getString()同上
                     * getDouble()同上
                     * getTime()同上
                     * getObject()同上
                     * */
                    String number = resultSet.getString(1);
                    String name=resultSet.getString("name");
                    int age = resultSet.getInt("age");
                    String gender = resultSet.getString(4);
                    System.out.println("number="+number+"-name="+name+"-age="+age+"-gender="+gender);
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                try {
                    if(resultSet!=null)resultSet.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(statement!=null)statement.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    if(con!=null)con.close();//必须关
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
}