題目:
用excel創造一個CSV檔,並用javaIO讀入,再insert入SQL server
思考進程:
- 先用excel創造文字檔,由於CSV檔好像只能讀第一排(自己測試結果)所以先輸入四個欄位做測試
- 去SQLserver創四個欄位table
- 開始寫JDBC的程式
- 建立連線
- 讀入CSV檔
- 切開字串
- 丟SQL INSERT指令到SQL中
package com.iii.jerry;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.Array;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.sun.corba.se.pept.transport.Connection;
public class csv {
public static void main(String[] args) {
try {
String connUrl = "jdbc:sqlserver://localhost:1433;databaseName=jdbc";//資料庫選擇
java.sql.Connection conn = DriverManager.getConnection(connUrl, "sa", "P@sswOrd");
FileReader fr = new FileReader("C:\\test.csv");//抓CSV檔進java
BufferedReader brdFile = new BufferedReader(fr);//bufferedReader
String strLine = null;
while((strLine = brdFile.readLine())!=null){//將CSV檔字串一列一列讀入並存起來直到沒有列為止
String[] array=strLine.split(",");//因為預設是用","分開所以用split切開存入字串陣列
System.out.println(strLine);
for(int i=0;i<array.length;i++){//偷看陣列元素有沒有切對
System.out.println(array[i]);
}
String qryInsert="insert into custinfo values(?,?,?,?)";//動態SQL指令
PreparedStatement pstmt= conn.prepareStatement(qryInsert);//因為是insert所以用PreparedStatement來接
pstmt.setString(1,array[0]);
pstmt.setInt(2,Integer.valueOf(array[1]));//因為這欄是用int的格式,所以將array[1]值抓出來轉int
pstmt.setString(3,array[2]);
pstmt.setString(4,array[3]);
pstmt.execute();
};
}catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (SQLException e){
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}