MyEclipse web項目連接數據庫


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();
            }
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM