這裡記錄一些最近摸索的基本的用法,以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..