1. 程式人生 > >使用Statement執行DML和DQL語句

使用Statement執行DML和DQL語句

import com.loaderman.util.JdbcUtil;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

import org.junit.Test;

/**
 * 使用Statement執行DML語句
 *
 */
public class Demo2 {
    private String url = "jdbc:mysql://localhost:3306/test";
    
private String user = "root"; private String password = "root"; /** * 增加 */ @Test public void testInsert(){ Connection conn = null; Statement stmt = null; try { //通過工具類獲取連線物件 conn = JdbcUtil.getConnection();
//3.建立Statement物件 stmt = conn.createStatement(); //4.sql語句 String sql = "INSERT INTO student(NAME,gender) VALUES('李四','女')"; //5.執行sql int count = stmt.executeUpdate(sql); System.out.println(
"影響了"+count+"行"); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } finally{ //關閉資源 /*if(stmt!=null) try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } if(conn!=null) try { conn.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); }*/ JdbcUtil.close(conn, stmt); } } /** * 修改 */ @Test public void testUpdate(){ Connection conn = null; Statement stmt = null; //模擬使用者輸入 String name = "陳六"; int id = 3; try { /*//1.註冊驅動 Class.forName("com.mysql.jdbc.Driver"); //2.獲取連線物件 conn = DriverManager.getConnection(url, user, password);*/ //通過工具類獲取連線物件 conn = JdbcUtil.getConnection(); //3.建立Statement物件 stmt = conn.createStatement(); //4.sql語句 String sql = "UPDATE student SET NAME='"+name+"' WHERE id="+id+""; System.out.println(sql); //5.執行sql int count = stmt.executeUpdate(sql); System.out.println("影響了"+count+"行"); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } finally{ //關閉資源 /*if(stmt!=null) try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } if(conn!=null) try { conn.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); }*/ JdbcUtil.close(conn, stmt); } } /** * 刪除 */ @Test public void testDelete(){ Connection conn = null; Statement stmt = null; //模擬使用者輸入 int id = 3; try { /*//1.註冊驅動 Class.forName("com.mysql.jdbc.Driver"); //2.獲取連線物件 conn = DriverManager.getConnection(url, user, password);*/ //通過工具類獲取連線物件 conn = JdbcUtil.getConnection(); //3.建立Statement物件 stmt = conn.createStatement(); //4.sql語句 String sql = "DELETE FROM student WHERE id="+id+""; System.out.println(sql); //5.執行sql int count = stmt.executeUpdate(sql); System.out.println("影響了"+count+"行"); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } finally{ //關閉資源 /*if(stmt!=null) try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); } if(conn!=null) try { conn.close(); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e); }*/ JdbcUtil.close(conn, stmt); } } }

import com.loaderman.util.JdbcUtil;

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

import org.junit.Test;

/**
 * 使用Statement執行DQL語句(查詢操作)
 *
 */
public class Demo3 {

    @Test
    public void test1(){
        Connection conn = null;
        Statement stmt = null;
        try{
            //獲取連線
            conn = JdbcUtil.getConnection();
            //建立Statement
            stmt = conn.createStatement();
            //準備sql
            String sql = "SELECT * FROM student";
            //執行sql
            ResultSet rs = stmt.executeQuery(sql);
            
            //移動游標
            /*boolean flag = rs.next();
            
            flag = rs.next();
            flag = rs.next();
            if(flag){
                //取出列值
                //索引
                int id = rs.getInt(1);
                String name = rs.getString(2);
                String gender = rs.getString(3);
                System.out.println(id+","+name+","+gender);
                
                //列名稱
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String gender = rs.getString("gender");
                System.out.println(id+","+name+","+gender);
            }*/
            
            //遍歷結果
            while(rs.next()){
                int id = rs.getInt("id");
                String name = rs.getString("name");
                String gender = rs.getString("gender");
                System.out.println(id+","+name+","+gender);
            }
            
        }catch(Exception e){
            e.printStackTrace();
            throw new RuntimeException(e);
        }finally{
            JdbcUtil.close(conn, stmt);
        }
    }
}

 



import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * jdbc工具類
 *
 */
public class JdbcUtil {
    private static String url = null;
    private static String user = null;
    private static String password = null;
    private static String driverClass = null;
    
    /**
     * 靜態程式碼塊中(只加載一次)
     */
    static{
        try {
            //讀取db.properties檔案
            Properties props = new Properties();
            /**
             *  . 代表java命令執行的目錄
             *  在java專案下,. java命令的執行目錄從專案的根目錄開始
             *  在web專案下,  . java命令的而執行目錄從tomcat/bin目錄開始
             *  所以不能使用點.
             */
            //FileInputStream in = new FileInputStream("./src/db.properties");
            
            /**
             * 使用類路徑的讀取方式
             *  / : 斜槓表示classpath的根目錄
             *     在java專案下,classpath的根目錄從bin目錄開始
             *     在web專案下,classpath的根目錄從WEB-INF/classes目錄開始
             */
            InputStream in = JdbcUtil.class.getResourceAsStream("/db.properties");
            
            //載入檔案
            props.load(in);
            //讀取資訊
            url = props.getProperty("url");
            user = props.getProperty("user");
            password = props.getProperty("password");
            driverClass = props.getProperty("driverClass");
            
            
            //註冊驅動程式
            Class.forName(driverClass);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("驅程程式註冊出錯");
        }
    }

    /**
     * 抽取獲取連線物件的方法
     */
    public static Connection getConnection(){
        try {
            Connection conn = DriverManager.getConnection(url, user, password);
            return conn;
        } catch (SQLException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    
    
    /**
     * 釋放資源的方法
     */
    public static void close(Connection conn,Statement stmt){
        if(stmt!=null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
    }
    
    public static void close(Connection conn,Statement stmt,ResultSet rs){
        if(rs!=null)
            try {
                rs.close();
            } catch (SQLException e1) {
                e1.printStackTrace();
                throw new RuntimeException(e1);
            }
        if(stmt!=null){
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            }
        }
    }
}

db.properties

url=jdbc:mysql://localhost:3306/test
user=root
password=root
driverClass=com.mysql.jdbc.Driver