JDBC程式設計學習筆記(二)——執行SQL語句 ExecuteSQL.java
阿新 • • 發佈:2019-02-09
本文主要介紹使用Statement的execute()方法來執行任意的SQL語句,並列出你在執行該程式中可能會遇到的一系列問題,我只能將我在執行中遇到的問題描述,希望對你有所幫助。首先,你需要建立一個配置資料庫的配置檔案,如下圖:
檔案的內容如下圖:
內容主要是MySQL的url,以及使用者帳號和密碼,只要有這配置檔案,我們就不需要在程式碼內部改,只需載入配置檔案即可。以下附上原始碼:
編譯沒有錯誤,你會很高興,結果一執行,結果可能如下圖......................import java.util.*; import java.sql.*; import java.io.*; public class ExecuteSQL { private String driver; private String url; private String user; private String pass; Connection conn; Statement stmt; ResultSet rs; public void initParam(String paramFile) throws Exception { //使用Properties類來載入屬性檔案 Properties props=new Properties(); props.load(new FileInputStream(paramFile)); driver=props.getProperty("driver"); url=props.getProperty("url"); user=props.getProperty("user"); pass=props.getProperty("pass"); } public void executeSql(String sql) throws Exception { try { //載入驅動 Class.forName(driver); //獲取資料庫連線 conn=DriverManager.getConnection(url,user,pass); //使用Connection來建立一個Statment物件 stmt=conn.createStatement(); //執行SQL,返回boolean值表示是否包含ResultSet boolean hasResultSet=stmt.execute(sql); //如果執行後有ResultSet結果集 if(hasResultSet) { //獲取結果集 rs = stmt.getResultSet(); //ResultSetMetaData是用於分析結果集的元資料介面 ResultSetMetaData rsmd = rs.getMetaData(); int columnCount = rsmd.getColumnCount(); //迭代輸出ResultSet物件 while(rs.next()) { //依次輸出每列的值 for(int i=0;i<columnCount;i++) { System.out.print(rs.getString(i+1)+"\t"); } System.out.print("\n"); } } else { System.out.println("該SQL語句影響的記錄有"+stmt.getUpdateCount()+"條"); } } //使用finally塊來關閉資料庫資源 finally { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } } public static void main(String[] args) throws Exception { ExecuteSQL es=new ExecuteSQL(); es.initParam("D:/mysql.ini"); System.out.println("------執行刪除表的DDL語句-----"); es.executeSql("drop table if exists my_test"); System.out.println("------執行建表的DDL語句-----"); es.executeSql("create table my_test"+"(test_id int auto_increment primary key,"+"test_name varchar(255))"); System.out.println("------執行插入資料的DML語句-----"); es.executeSql("insert into my_test(test_name)"+"select student_name from student_table"); System.out.println("------執行查詢資料的查詢語句-----"); es.executeSql("select*from my_test"); } }
這主要又是資料庫的字元編碼問題,具體我也不是很清楚,請大家看部落格http://blog.csdn.net/geilivablemental/article/details/45034229.....我是看了之後,然後再修改,即在原始碼上加入下列兩條語句:
然後就......
可以了...........