範例是讀取一個csv檔案,內容每一行為一筆資料,每筆資料不同欄位以","做切割,使用split()方法來分離成String陣列/另一個範例則是相反的,從資料庫取select出資料,寫入檔案。
連MySQL接資料庫使用JDBC-Driver,方法可以參考Eclipse設定JDBC連接MySQL資料庫,這裡另外再提供一個使用DataSource的設定方法,使用起來也比較簡單。
JDBC連接資料庫,取得Connection的方法:
在需要連線時都會要求載入Driver Class,然後要求連線。
public static Connection getConnection () throws SQLException { try { Class.forName("com.mysql.jdbc.Driver").newInstance(); } catch(Exception e) { } Connection con=java.sql.DriverManager.getConnection( "jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=Big5","root","12345"); return con; }
利用建立DataSource來取得Connection:
當使用完畢Connection後,會交還DataSource,下次取用時直接取得連線資訊。
public static DataSource getPool() { //com.mysql.jdbc.jdbc2.optional. ds = null; com.mysql.jdbc.jdbc2.optional.MysqlDataSource ds = null; //try { //ds = new oracle.jdbc.pool.OracleConnectionPoolDataSource (); ds = new com.mysql.jdbc.jdbc2.optional.MysqlDataSource(); //傳入參數 //ds.setDriverType("thin"); ds.setServerName("127.0.0.1"); ds.setPortNumber(3306); ds.setDatabaseName("test"); ds.setUser("root"); ds.setPassword("12345"); } //catch(java.sql.SQLException ex) //{ //System.out.println(ex); //} return ds; }
匯入MySQL程式範例:
package database; import javax.sql.DataSource; import java.sql.*; import java.io.*; public class Importdata { private String sql = "insert into company_all(id,name,tel,address,category) values(?,?,?,?,?)"; private Connection con = null ; private PreparedStatement ps = null ; public Importdata() { //ds = getPool(); try { con = getConnection(); ps = con.prepareStatement(sql); java.io.File file = new java.io.File("c:/tools/原始.csv"); java.io.BufferedReader reader = new java.io.BufferedReader(new FileReader(file)); String str = ""; while((str=reader.readLine())!=null) { System.out.println(str); String arr[] = str.split(","); for(int i = 0 ; i < 5 ; i ++) { ps.setString(i+1, arr[i]); } ps.executeUpdate(); } DisConDB(); }catch(java.sql.SQLException ex ) { System.out.println(ex); } catch(java.io.IOException ex ) { System.out.println(ex); } } public void DisConDB() throws java.sql.SQLException { if(ps!=null) ps.close(); if(con!=null) con.close(); ps = null; con = null; } public static Connection getConnection () throws SQLException { try { Class.forName("com.mysql.jdbc.Driver").newInstance(); } catch(Exception e) { } Connection con=java.sql.DriverManager.getConnection( "jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=Big5","root","12345"); return con; } public static DataSource getPool() { //com.mysql.jdbc.jdbc2.optional. ds = null; com.mysql.jdbc.jdbc2.optional.MysqlDataSource ds = null; //try { //ds = new oracle.jdbc.pool.OracleConnectionPoolDataSource (); ds = new com.mysql.jdbc.jdbc2.optional.MysqlDataSource(); //傳入參數 //ds.setDriverType("thin"); ds.setServerName("127.0.0.1"); ds.setPortNumber(3306); ds.setDatabaseName("test"); ds.setUser("root"); ds.setPassword("12345"); } //catch(java.sql.SQLException ex) //{ //System.out.println(ex); //} return ds; } public static void main(String args[]) { new Importdata(); } }
Select MySQL資料存成檔案
package database; import java.io.*; import java.sql.*; public class ExportData { public ExportData() { Connection con =null; Statement stat = null; ResultSet rs = null; String sql = "select a.id,a.name,a.tel,a.address,a.category,b.L,b.D from company_all a left outer join company b on a.id = b.id order by cast(a.id as SIGNED)"; File file = new File("c:/tools/export.csv"); try { BufferedWriter writer = new BufferedWriter(new FileWriter(file)); con = Importdata.getConnection(); stat = con.createStatement(); rs = stat.executeQuery(sql); while(rs.next()) { String flag = ""; String tmp = rs.getString("address"); if(tmp.indexOf("號")!=(tmp.length()-1)) flag = "有問題"; writer.write(rs.getString(1)+","+rs.getString(2) +","+rs.getString(3)+","+rs.getString(4)+","+rs.getString(5) +","+rs.getString(6)+","+rs.getString(7)+","+flag+"\n"); } writer.flush(); writer.close(); writer = null; } catch(SQLException e) { System.out.println(e); } catch(IOException e) { System.out.println(e); } } public static void main(String args[]) { new ExportData(); } }
板大不好意思,想請問一下,現在若我想做個註冊登入網站
註冊時,帳號密碼存入mysql裡。登入時去mysql裡抓核對資料,正確進入
這樣的話,是不是在註冊的jsp裡,和”Java讀取檔案匯入MySQL資料庫”結合
登入時要和”java取得MySQL資料存入檔案”結合
是這樣嗎?
那和”Eclipse設定JDBC連接MySQL資料庫”又有什麼關係嗎?