這裡記錄一些最近摸索的基本的用法,以MS-SQL為例
在使用前記得要(搖一搖?)
import java.sql.*;
0. Connection
String conUrl = "jdbc:sqlserver://portNumber:XX;serverName=XX;databaseName=XX;user=XX;password=*****;"; Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connection con = DriverManager.getConnection(conUrl);
1. Create , table, truncate table
try{ String query="XXX";//可以是create, drop或是truncate table的sql語句 Statement stmt = con.createStatement(); stmt.executeUpdate(query); stmt.close(); con.close(); }catch (Exception e) { e.printStackTrace(); } }
2. Insert data
如果只是要插入一筆資料的話,可以把上面的String query="XXX";換成
String query="insert into xxx...";也可以參考prepare statement的寫法,好處是可以不用重複寫sql語句,只要把問號(?)的地方取代成想要插入的值
try{ String sql="INSERT INTO XXX (column1,column2) VALUES (?,?)";//prepare statement PreparedStatement pstmt = con.prepareStatement(sql); pstmt.setString(1, "插入值1");//第一個?要插入的值 pstmt.setString(2, "插入值2");//第二個?要插入的值 pstmt.executeUpdate(); pstmt.close(); con.close(); }catch (Exception e) { e.printStackTrace(); } }如果要insert的資料有很多筆,其實一筆一筆塞是有點沒效率的,所以如果要塞入很多筆資料的話,可以先寫入Batch再一次執行
try{ String sql="INSERT INTO XXX (column1,column2) VALUES (?,?)";//prepare statement PreparedStatement pstmt = con.prepareStatement(sql); for(String s : Data){ pstmt.setString(1, "要插入的資料");//第一個?要插入的值 pstmt.setString(2, "要插入的資料");//第二個?要插入的值 pstmt.addBatch();//寫入Batch } pstmt.executeBatch();//執行Batch pstmt.close(); con.close(); }catch (Exception e) { e.printStackTrace(); } }
3. 讀料取資
讀取SQL database的資料算是蠻常用的try{ String sql="SELECT XXX ...";//Query語句 Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(sql);//Query結果存在這裡 ResultSetMetaData rsmd = rs.getMetaData(); //取得Query資料 int numColumns = rsmd.getColumnCount(); while (rs.next()){//while loop 一筆一筆iterate for(int i = 1; i < numColumns+1; i ++){ System.out.println(rs.getString(rsmd.getColumnName(i)));//印出資料 } } stmt.close(); con.close(); }catch (Exception e) { e.printStackTrace(); } }以上是用print當作示範,當然也可以把資料讀下來做其搭更複雜的計算,比如說塞進array裡面bla bla bla..