java資料庫程式設計(4) 使用execute方法執行SQL語句
阿新 • • 發佈:2018-12-14
- Statement的execute()語句可以執行任何SQL語句,但是它比較麻煩,故通常應該使用executeQuery()或者executeUpdate()方法。
- 使用exrcute()方法執行只是返回boolean值,它表示執行該SQL語句是否返回了ResultSet物件,如果需要獲取ResultSet物件的話,可以使用下面兩個方法:
- getResultSet()獲取該Statement執行查詢語句後返回的ResultSet物件
- getUpdateCount()獲取該Statement執行SQL語句後影響的記錄行數
- 以下為程式碼示例,具體講解穿插在程式碼中
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