项目中连接数据库的工具类

Jun 07, 2016 pm 03:54 PM
違う 道具 データベース 接続する

在项目有时会用到不同数据库,项目写了一个连接不同数据库(包括mysql,SQL server, oracle ,access)的工具类: import java.io.File;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.ResultSetMet

在项目有时会用到不同数据库,项目写了一个连接不同数据库(包括mysql,SQL server, oracle ,access)的工具类:

import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ConnectionDbUtils {

    /**
     * 获取数据库连接对象(sql server)
     * 
     * @param server
     *            服务器
     * @param database
     *            数据库名
     * @param user_id
     *            用户名
     * @param password
     *            密码
     * @return Connection
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public static Connection getSqlServerConnection(String server, String database, String user_id, String password)
            throws ClassNotFoundException, SQLException {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        Connection con = DriverManager.getConnection("jdbc:sqlserver://" + server + ":1433;DatabaseName=" + database,
                user_id, password);
        return con;
    }
    
    
    /**
     * 获取数据库连接对象(MySql)
     * 
     * @param server
     *            服务器
     * @param database
     *            数据库名
     * @param user_id
     *            用户名
     * @param password
     *            密码
     * @return Connection
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public static Connection getMySqlConnection(String server, String database, String user_id, String password)
            throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.jdbc.Driver");
        return DriverManager.getConnection("jdbc:mysql://"+server+":3306/" + database,
        		user_id, password);
    }

    /**
     * JDBC连接oracle
     * @param server IP
     * @param database 数据库
     * @param user_id 用户名
     * @param password 密码
     * @param sql 
     * @return
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public static Connection getOracleConnection(String server, String database, String user_id, String password)
            throws ClassNotFoundException, SQLException {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@" + server + ":1521:" + database, user_id,
                password);
        return conn;
    }

    /**
     * JDBC连接Access
     * @param database 数据库路径
     * @param user_id 用户名
     * @param password 密码
     * @param sql 
     * @return
     * @throws ClassNotFoundException
     * @throws SQLException
     * @throws IllegalAccessException 
     * @throws InstantiationException 
     */
    public static Connection getAccessConnection(String database, String user_id, String password)
            throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException {
        System.out.println("==============" + database);
        Class.forName("com.hxtt.sql.access.AccessDriver").newInstance();
        Connection conn = DriverManager.getConnection("jdbc:Access:///" + database, user_id, password);
        System.out.println("连接成功");
        return conn;
    }

    /**
     * Access 查询数据
     * @param database
     * @param user_id
     * @param password
     * @param strSql
     * @return
     * @throws Exception
     */
    public static List<Map<String, Object>> queryAccessData(String database, String user_id, String password,
            String strSql) throws Exception {
		File file = new File(database);
		if (file.exists()){
			if (file.canWrite()) {
				System.out.println("不只读");
			} else {
				System.out.println("只读");
				file.setWritable(true);
			}
		} else {
			System.out.println("不存在");
		}
        Connection con = ConnectionDbUtils.getAccessConnection(database, user_id, password);
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(strSql);
        List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
        while (rs.next()) {
            Map<String, Object> map = new HashMap<String, Object>();
            ResultSetMetaData rsmd = rs.getMetaData();
            for (int i = 1; i <= rsmd.getColumnCount(); i++) {
                String columnName = rsmd.getColumnName(i);
                Object objValue = rs.getObject(columnName);
                map.put(columnName, objValue);
            }
            listMap.add(map);
        }
        return listMap;
    }

    /**
     * Access增删改
     * @param database
     * @param user_id
     * @param password
     * @param sql
     */
    public static void createAccessSQLExecute(String database, String user_id, String password, String sql) {

        Statement stmt = null;
        try {
            Connection con = ConnectionDbUtils.getAccessConnection(database, user_id, password);
            stmt = con.createStatement();
            int i = stmt.executeUpdate(sql);
            System.out.println("执行sql语句:" + sql);
            System.out.println("处理成功!处理条数为" + i);
        }
        catch (Exception e) {
            e.printStackTrace();
            System.out.println("执行失败,请检查远程数据库是否打开服务");
        }
        finally {
            try {
                if (null != stmt) {
                    stmt.close();
                }
            }
            catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * oracle 查询数据
     * @param server
     * @param database
     * @param user_id
     * @param password
     * @param strSql
     * @return
     * @throws Exception
     */
    public static List<Map<String, Object>> queryOracleData(String server, String database, String user_id,
            String password, String strSql) throws Exception {
        Connection con = ConnectionDbUtils.getOracleConnection(server, database, user_id, password);
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(strSql);
        List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
        while (rs.next()) {
            Map<String, Object> map = new HashMap<String, Object>();
            ResultSetMetaData rsmd = rs.getMetaData();
            for (int i = 1; i <= rsmd.getColumnCount(); i++) {
                String columnName = rsmd.getColumnName(i);
                Object objValue = rs.getObject(columnName);
                map.put(columnName, objValue);
            }
            listMap.add(map);
        }
        return listMap;
    }

    /**
     * oracle增删改
     * @param server
     * @param database
     * @param user_id
     * @param password
     * @param sql
     */
    public static void createOracleSQLExecute(String server, String database, String user_id, String password,
            String sql) {

        Statement stmt = null;
        try {
            Connection con = ConnectionDbUtils.getOracleConnection(server, database, user_id, password);
            stmt = con.createStatement();
            System.out.println("执行sql语句:" + sql);
            int i = stmt.executeUpdate(sql);
            System.out.println("处理成功!处理条数为" + i);
        }
        catch (Exception e) {
            e.printStackTrace();
            System.out.println("执行失败,请检查远程数据库是否打开服务");
        }
        finally {
            try {
                if (null != stmt) {
                    stmt.close();
                }
            }
            catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 查询数据(sql server)
     * 
     * @param server 服务器
     * @param database 数据库名
     * @param user_id 用户名
     * @param password 密码
     * @param strSql sql语句
     * @return List<Map<String,Object>>
     * @throws Exception
     */
    public static List<Map<String, Object>> querySqlServerData(String server, String database, String user_id,
            String password, String strSql) throws Exception {
        Connection con = ConnectionDbUtils.getSqlServerConnection(server, database, user_id, password);
        Statement stmt = con.createStatement();
        System.out.println("querySqlServerData的sql语句===========" + strSql);
        ResultSet rs = stmt.executeQuery(strSql);
        List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
        while (rs.next()) {
            Map<String, Object> map = new HashMap<String, Object>();
            ResultSetMetaData rsmd = rs.getMetaData();
            for (int i = 1; i <= rsmd.getColumnCount(); i++) {
                String columnName = rsmd.getColumnName(i);
                Object objValue = rs.getObject(columnName);
                map.put(columnName, objValue);
            }
            listMap.add(map);
        }
        return listMap;
    }

    /**
     * 执行sql的添加、修改、删除操作
     * 
     * @param conn
     * @param sql
     */
    public static void createSQLExecute(String server, String database, String user_id, String password,
            List<String> sql) {
        Statement stmt = null;
        try {
            Connection con = ConnectionDbUtils.getSqlServerConnection(server, database, user_id, password);
            stmt = con.createStatement();
            for (String s : sql) {
                System.out.println("执行sql语句:" + sql);
                int i = stmt.executeUpdate(s);
                System.out.println("处理成功!处理条数为" + i);
            }
        }
        catch (Exception e) {
            e.printStackTrace();
            System.out.println("执行失败,请检查远程数据库是否打开服务");
        }
        finally {
            try {
                if (null != stmt) {
                    stmt.close();
                }
            }
            catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 执行sql的添加、修改、删除操作
     * 
     * @param conn
     * @param sql
     */
    public static void createSQLExecute(String server, String database, String user_id, String password, String sql) {

        Statement stmt = null;
        try {
            System.out.println("执行sql语句:" + sql);
            Connection con = ConnectionDbUtils.getSqlServerConnection(server, database, user_id, password);

            stmt = con.createStatement();
            int i = stmt.executeUpdate(sql);
            System.out.println("处理成功!处理条数为" + i);
        }
        catch (Exception e) {
            e.printStackTrace();
            System.out.println("执行失败,请检查远程数据库是否打开服务");
        }
        finally {
            try {
                if (null != stmt) {
                    stmt.close();
                }
            }
            catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
    
    
    /**
     * MySql 查询数据
     * @param server
     * @param database
     * @param user_id
     * @param password
     * @param strSql
     * @return
     * @throws Exception
     */
    public static List<Map<String, Object>> queryMySqlData(String server, String database, String user_id,
            String password, String sql) throws Exception {
        Connection con = ConnectionDbUtils.getMySqlConnection(server, database, user_id, password);
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(sql);
        List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
        while (rs.next()) {
            Map<String, Object> map = new HashMap<String, Object>();
            ResultSetMetaData rsmd = rs.getMetaData();
            for (int i = 1; i <= rsmd.getColumnCount(); i++) {
                String columnName = rsmd.getColumnName(i);
                Object objValue = rs.getObject(columnName);
                map.put(columnName, objValue);
            }
            listMap.add(map);
        }
        return listMap;
    }
    
    /**
     * 执行MySql的增删改
     * @param server
     * @param database
     * @param user_id
     * @param password
     * @param sql
     */
    public static void createMySqlExecute(String server,String database,String user_id,String password,String sql){
    	Connection con=null;
        Statement stmt = null;
        try {
            System.out.println("执行sql语句:" + sql);
            con= ConnectionDbUtils.getMySqlConnection(server, database, user_id, password);
            stmt = con.createStatement();
            int successCount = stmt.executeUpdate(sql);
            System.out.println("处理成功!处理条数为" + successCount);
        }
        catch (Exception e) {
            e.printStackTrace();
            System.out.println("执行失败,请检查远程数据库是否打开服务");
        }
        finally {
            try {
                if (null != stmt) {
                    stmt.close();
                }
            }
            catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}
ログイン後にコピー


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

H5ページの生産には継続的なメンテナンスが必要ですか? H5ページの生産には継続的なメンテナンスが必要ですか? Apr 05, 2025 pm 11:27 PM

H5ページは、コードの脆弱性、ブラウザー互換性、パフォーマンスの最適化、セキュリティの更新、ユーザーエクスペリエンスの改善などの要因のため、継続的に維持する必要があります。効果的なメンテナンス方法には、完全なテストシステムの確立、バージョン制御ツールの使用、定期的にページのパフォーマンスの監視、ユーザーフィードバックの収集、メンテナンス計画の策定が含まれます。

フレックスレイアウト内の紫色のスラッシュ領域が誤って「オーバーフロー空間」と見なされるのはなぜですか? フレックスレイアウト内の紫色のスラッシュ領域が誤って「オーバーフロー空間」と見なされるのはなぜですか? Apr 05, 2025 pm 05:51 PM

フレックスレイアウトの紫色のスラッシュ領域に関する質問フレックスレイアウトを使用すると、開発者ツールなどの混乱する現象に遭遇する可能性があります(D ...

グラデーションの背景を持つカードとクーポンのレイアウトに対するギャップ効果を達成する方法は? グラデーションの背景を持つカードとクーポンのレイアウトに対するギャップ効果を達成する方法は? Apr 05, 2025 am 07:48 AM

カードクーポンレイアウトのギャップ効果を実現します。カードクーポンレイアウトを設計するとき、特に背景が勾配である場合、カードクーポンにギャップを追加する必要があることがよくあります...

ネガティブマージンが場合によっては効果がないのはなぜですか?この問題を解決する方法は? ネガティブマージンが場合によっては効果がないのはなぜですか?この問題を解決する方法は? Apr 05, 2025 pm 10:18 PM

なぜマイナスマージンが場合によっては有効にならないのですか?プログラミング中、CSSの負のマージン(負...

58.com作業ページでリアルタイムアプリケーションと視聴者のデータを取得する方法は? 58.com作業ページでリアルタイムアプリケーションと視聴者のデータを取得する方法は? Apr 05, 2025 am 08:06 AM

クロール中に58.com作業ページの動的データを取得するにはどうすればよいですか? Crawlerツールを使用して58.comの作業ページをrawったら、これに遭遇する可能性があります...

JavaScriptコードラインブレーク:長い文字列とオブジェクト属性アクセスを優雅に処理する方法は? JavaScriptコードラインブレーク:長い文字列とオブジェクト属性アクセスを優雅に処理する方法は? Apr 05, 2025 am 08:03 AM

JavaScriptコードの詳細な説明JavaScriptコードを書くとき、私たちはしばしば長すぎるコードの行に遭遇します。

なぜマイナスマージンが場合によっては有効にならないのですか? なぜマイナスマージンが場合によっては有効にならないのですか? Apr 05, 2025 pm 04:09 PM

なぜマイナスマージンが場合によっては有効にならないのですか? CSSを使用してWebページをレイアウトする場合、しばしば負のマージンに遭遇します(ネガティブ...

CSSを使用して、さまざまな凹面効果を効率的に達成する方法は? CSSを使用して、さまざまな凹面効果を効率的に達成する方法は? Apr 05, 2025 pm 02:18 PM

CSSで凹面効果を達成するための多くの方法は、多くの開発者がWebページで凹面効果を達成する必要性に遭遇しました。最近、開発者がフォーラムで言及しました...

See all articles