1. 程式人生 > >java資料庫程式設計(4) 使用execute方法執行SQL語句

java資料庫程式設計(4) 使用execute方法執行SQL語句

  1. Statement的execute()語句可以執行任何SQL語句,但是它比較麻煩,故通常應該使用executeQuery()或者executeUpdate()方法。
  2. 使用exrcute()方法執行只是返回boolean值,它表示執行該SQL語句是否返回了ResultSet物件,如果需要獲取ResultSet物件的話,可以使用下面兩個方法:
    1. getResultSet()獲取該Statement執行查詢語句後返回的ResultSet物件
    2. getUpdateCount()獲取該Statement執行SQL語句後影響的記錄行數
  3. 以下為程式碼示例,具體講解穿插在程式碼中
    import java.io.FileInputStream;
    import java.sql.*;
    import java.util.Properties;
    
    public class ExecuteSQL {
    
    //    常規操作
        private String driver;
        private String url;
        private String user;
        private String pass;
        public void initParam(String paramFile) throws  Exception{
            Properties properties = new Properties();
            properties.load(new FileInputStream(paramFile));
            driver = properties.getProperty("driver");
            url = properties.getProperty("url");
            user = properties.getProperty("user");
            pass = properties.getProperty("pass");
        }
        public void executeSql(String sql) throws Exception{
            Class.forName(driver);
            try(
                    Connection connection = DriverManager.getConnection(url, user, pass);
                    Statement statement = connection.createStatement()){
    
                boolean hasResultSet = statement.execute(sql);
    //            執行execute方法後返回boolean值
    
                if(hasResultSet){
                    try(
                            ResultSet rs = statement.getResultSet()
    //                獲取結果集
                    ){
    
                        ResultSetMetaData rsmd = rs.getMetaData();
    //                    ResultSetMetaData是用於分析結果集的元資料介面
    
                        int columnCount = rsmd.getColumnCount();
    //                    獲取行數
    
                        while (rs.next()){
                            for(int i=0; i<columnCount; i++){
                                System.out.println(rs.getString(i+1) + "\t");
                            }
                            System.out.println();
                        }
                    }
                }
                else {
                    System.out.println("該sql語句影響的記錄有" + statement.getUpdateCount() + "條");
                }
            }
        }
    
        public static void main(String args[]) throws  Exception{
            ExecuteSQL executeSQL = new ExecuteSQL();
            executeSQL.initParam("mysql.ini");
            System.out.println("刪除表的DDL語句");
            executeSQL.executeSql("drop table if exists my_test");
            System.out.println("建立表的DDL語句");
            executeSQL.executeSql("create table my_test" +
                    "(id int);");
            System.out.println("插入資料");
            executeSQL.executeSql("insert into my_test values (1);");
            System.out.println("查詢所有資料");
            executeSQL.executeSql("select * from my_test");
    
        }
    }
    
    //執行上面的程式,得到以下執行結果
    //        刪除表的DDL語句
    //        該sql語句影響的記錄有0條
    //        建立表的DDL語句
    //        該sql語句影響的記錄有0條
    //        插入資料
    //        該sql語句影響的記錄有1條
    //        查詢所有資料
    //        1