1、Build path添加jdbc驅動包
2、編寫驅動類
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Connect { public Connection getconnect(){ Connection con=null; String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/bs?serverTimezone=UTC"; String user = "root"; //自己數據庫的用戶名 String password = "1234"; //自己數據庫的密碼 try { Class.forName(driver); con = DriverManager.getConnection(url, user, password); if (!con.isClosed()) System.out.println("\n\t\t成功以 " + user + " 身份連接到數據庫!!!"); return con; } catch (ClassNotFoundException e) { // 數據庫驅動類異常處理 System.out.println("Sorry,can`t find the Driver!"); e.printStackTrace(); } catch (SQLException e) { // 數據庫連接失敗異常處理 e.printStackTrace(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally { System.out.println("\t\t\t\t\t\t\t\t獲取數據庫數據完畢!!!"); } return con; } }
3、調用這個類
package com.ins; import java.sql.*; import javax.naming.*; import javax.sql.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.ResultSetMetaData; public class run { public static void main(String[] args) { test("select * from d_org"); } public static void test(String sql){ Connect _connect=new Connect(); Connection con=_connect.getconnect(); try { Statement statement = con.createStatement(); // 3.ResultSet類,用來存放獲取的結果集!! ResultSet rs = statement.executeQuery(sql); ResultSetMetaData rsmd = rs.getMetaData(); int columnsNumber = rsmd.getColumnCount(); while (rs.next()) { for (int i = 1; i <= columnsNumber; i++) { if (i > 1) System.out.print(", "); String columnValue = rs.getString(i); System.out.print(rsmd.getColumnName(i) + " " + columnValue); } System.out.println("\n"); } } catch (Exception e) { e.printStackTrace(); } } }
其他兩個訪問數據庫查詢和保存結果的類:
package com.ins; import java.sql.*; import javax.naming.*; import javax.sql.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.ResultSetMetaData; public class ExeQueryResult { public String[][] getSelectResultWithStringArray(String sql) { Connect _connect=new Connect(); //連接數據庫 Connection con=_connect.getconnect(); if(con==null) return null; try { Statement statement = con.createStatement(); ResultSet rs = statement.executeQuery(sql); // 3.ResultSet類,用來存放獲取的結果集!! if(rs==null){ System.out.println("查詢結果為空!\n"); return null; } ResultSetMetaData rsmd = rs.getMetaData(); int rowsNumber = 0; int columnsNumber = rsmd.getColumnCount(); //列數目 rs.last(); rowsNumber=rs.getRow(); //行數目 rs.first(); Object o; Object[][] ob = new Object[rowsNumber][columnsNumber]; int colType; for (int i = 0; i < rowsNumber; i++) { for (int j = 0; j < columnsNumber; j++) { o = rs.getObject(j + 1); if(getIndexType(rs,j) == 0) System.out.print("沒有該類型!"); else { colType = getIndexType(rs,j); switch (colType) { case java.sql.Types.DATE: Date d = (Date) o; if (d != null) { ob[i][j] = d.toString(); } break; case java.sql.Types.TIME: Time t = (Time) o; if (t != null) { ob[i][j] = t.toString(); } break; case java.sql.Types.TIMESTAMP: //時間戳 Timestamp ts = (Timestamp) o; if (ts != null) { ob[i][j] = ts.toString(); } break; default: ob[i][j] = o; break; } } } rs.next(); } con.close(); String[][] s = new String[ob.length][ob[0].length]; for (int i = 0; i < ob.length; i++) { for (int j = 0; j < ob[i].length; j++) { if (ob[i][j] != null) { s[i][j] = ob[i][j].toString().trim(); //tirm()去掉兩端多余字符 } else { s[i][j] = ""; } } } return s; } catch (Exception e) { e.printStackTrace(); return null; } } private int getIndexType(ResultSet set,int i) { int type = 0; try { /* getColumType()方法 方法說明:根據字段的索引值取得字段的類型,返回值的定義在java.sql.Type類 參數:column,字段的索引值,從1開始 返回值:字符串,SQL的數據類型定義在java.sql.Type類 異常產生:數據庫發生任何的錯誤,則會產生一個SQLException對象 */ type = set.getMetaData().getColumnType(i + 1); } catch (SQLException e) { e.printStackTrace(); } return type; } } /* int r=0; for (int i = 1; i <= columnsNumber; i++) { String s1=rsmd.getColumnLabel(i); s[0][i]=s1; } rs.first(); while (rs.next()) { r++; for(int i=1;i<=columnsNumber;i++){ String columnValue =new String(rs.getString(i)); s[r][i]=columnValue; } } */
package com.ins; import java.sql.*; import java.util.*; import javax.naming.*; import javax.sql.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.ResultSetMetaData; public class ExeInsertUpdateDelete { public final static int INSERT = 1; //插入 public final static int UPDATE = 2; //修改 public final static int DELETE = 3; //刪除 public static String keyMark = "$"; //關鍵子段標識 public static String nonKeyMark ="_"; //一般字段標識 Connect _connect=new Connect(); Connection con=_connect.getconnect(); public boolean execSql(String tableName,int tableAction,Hashtable dbParam){ return false; } public boolean execSql(String sqlStr){ try{ Statement stmt1 =con.createStatement(); // 創建用於執行靜態sql語句的Statement對象 //String sql="insert into d_org(ORG_ID,ORG_NAME,ORG_ORDER,UP_ORG_ID) values (1,null,null,0)" ; stmt1.executeUpdate(sqlStr); return true; } catch (SQLException e){ e.printStackTrace(); return false; } // return false; } public boolean execSql(String[] sql){ Statement statement=null; try { Class.forName("com.mysql.jdbc.Driver"); //加載驅動 statement =con.createStatement(); con.setAutoCommit(false); //相當於 set autocommit=0; statement =con.createStatement(); for(int i=0;i<sql.length;i++) { statement.addBatch(sql[i]); } statement.executeBatch(); //將上述SQL語句批量執行。 con.commit(); //executeBatch()語句若不出錯,提交事務。 return true; } catch (Exception e) { try { //如果在創建連接對象過程中爆發異常,connection就會為null。若不加if語句,就會出現空指針異常。 if(con!=null) { con.rollback(); //executeBatch()語句若出錯,回滾,兩個SQL語句執行不成功。 } } catch (SQLException e1) { e1.printStackTrace(); } e.printStackTrace(); return false; } finally { try { if (statement!=null) { statement.close(); } } catch (SQLException e) { e.printStackTrace(); } try { if (con!=null) { con.close(); } } catch (SQLException e) { e.printStackTrace(); } } } }