Rumah pangkalan data tutorial mysql JDBC 操作数据库

JDBC 操作数据库

Jun 07, 2016 pm 03:35 PM
jdbc guna beroperasi pangkalan data bingkai

有时候 使用框架,或许没有直接操作数据库来的快, 或者说是使用框架太麻烦,有个直接操作数据库的工具类多好,故直接上干货,写下如下代码: private static Logger logger = Logger.getLogger(DBHelper.class.getName()); /** * 纯 java 式的连接 定义常量

            有时候

           使用框架,或许没有直接操作数据库来的快,

           或者说是使用框架太麻烦,有个直接操作数据库的工具类多好,故直接上干货,写下如下代码:


    private static Logger logger = Logger.getLogger(DBHelper.class.getName());
    /**
     * 纯 java 式的连接 定义常量来存储配置
     */
    public static String DRIVER = null;
    public static String URL = null;
    public static String USER = null;
    public static String PASS = null;

    Connection conn = null;
    PreparedStatement pstmt = null;
    Statement stmt = null;
    ResultSet rs = null;

    // 获得数据连接信息.
    static {
        Properties pops = new Properties();
        InputStream inStream;
        try {
            inStream = DBCommandUtils.class.getResourceAsStream("/jdbc.properties");
            pops.load(inStream);
        } catch (FileNotFoundException e) {
            logger.error(e.getMessage());
        } catch (IOException e) {
            logger.error(e.getMessage());
        }

        URL = pops.getProperty("datasource.url");
        USER = pops.getProperty("datasource.username");
        PASS = pops.getProperty("datasource.password");
        DRIVER = pops.getProperty("datasource.driverClassName");
    }

    /**
     * 得到数据库连接
     */
    public Connection getConn() {
        try {
            if (DRIVER == null || USER == null || PASS == null || URL == null) {
                Properties pops = new Properties();
                InputStream inStream;
                try {
                    inStream = DBCommandUtils.class
                            .getResourceAsStream("/jdbc.properties");
                    pops.load(inStream);
                } catch (FileNotFoundException e) {
                    logger.error(e.getMessage());
                } catch (IOException e) {
                    logger.error(e.getMessage());
                }

                URL = pops.getProperty("datasource.url");
                USER = pops.getProperty("datasource.username");
                PASS = pops.getProperty("datasource.password");
                DRIVER = pops.getProperty("datasource.driverClassName");
            }
            // 获得链接.
            Class.forName(DRIVER);
            conn = (Connection) DriverManager.getConnection(URL, USER, PASS);
            return conn;
        } catch (Exception e) {
            logger.error("获取链接失败!" + e.getLocalizedMessage());
            return null;
        }
    }

    /**
     * 要执行的增 ,删 ,改 的操作,不执行查询 (注意参数的使用)
     */
    public int executeSQL(String preparedSql, String[] param) {
        int count = 0;
        /**
         * 执行的操作
         */
        try {
            if (conn == null) {
                conn = getConn(); // 获得连接
            }
            pstmt = conn.prepareStatement(preparedSql);// 要执行的 sql 语句
            if (param != null) {
                for (int i = 0; i                     pstmt.setString(1 + i, param[i]);// 为预编译sql设置参数
                }
            }
            count = pstmt.executeUpdate(); // 执行 sql 语句
        } catch (SQLException e) {
            logger.error(e.getMessage()); // 处理SQLException异常
            return -1;
        }
        return count; // 返回结果
    }

    /**
     * 要执行的增 ,删 ,改 的操作,不执行查询 (注意参数的使用)
     */
    public int executeSQL(String preparedSql) {
        int count = 0;
        /**
         * 执行的操作
         */
        try {
            if (conn == null) {
                conn = getConn(); // 获得连接
            }
            pstmt = conn.prepareStatement(preparedSql);// 要执行的 sql 语句
            count = pstmt.executeUpdate(); // 执行 sql 语句
        } catch (SQLException e) {
            logger.error(e.getMessage()); // 处理SQLException异常
            return -1;
        }
        return count; // 返回结果
    }

    /**
     * 要执行的增 ,删 ,改 的操作,不执行查询 (注意参数的使用)
     */
    public int[] executeSQLs(String[] sqls) {
        int[] count = null;
        /**
         * 执行的操作
         */
        try {
            if (conn == null) {
                conn = getConn(); // 获得连接
            }
            stmt = conn.createStatement();
            for (String sql : sqls) {
                stmt.addBatch(sql);
            }
            count = stmt.executeBatch(); // 执行 sql 语句
        } catch (SQLException e) {
            logger.error(e.getMessage()); // 处理SQLException异常
            return null;
        }
        return count; // 返回结果
    }

    /**
     * 要执行的复杂操作
     */
    public boolean executeAllSQL(String preparedSql) {
        boolean result = false;
        try {
            if (conn == null) {
                conn = getConn(); // 获得连接
            }
            pstmt = conn.prepareStatement(preparedSql);// 要执行的 sql 语句
            result = pstmt.execute();
        } catch (SQLException e) {
            logger.error(e.getMessage()); // 处理SQLException异常
        }
        return result; // 返回结果
    }

    /**
     * 使用PreparedStatement查询数据
     *
     * @param sql
     * @param params
     *            参数列表
     * @return 结果集 不要关闭连接
     */
    public ResultSet selectSQL(String sql, String[] param) {
        try {
            if (conn == null) {
                conn = getConn(); // 获得连接
            }
            pstmt = conn.prepareStatement(sql); // 执行sql语句
            for (int i = 0; i                 pstmt.setString(i + 1, param[i]);
            }
            rs = pstmt.executeQuery(); // 执行的结果
        } catch (SQLException e1) {
            logger.error(e1.getMessage());
        }
        return rs;
    }

    /**
     * 使用statement执行查询
     *
     * @param sql
     *            执行的SQL语句
     * @return 不可关闭连接
     */
    public ResultSet selectSQL(String sql) {
        try {
            if (conn == null) {
                conn = getConn(); // 获得连接
            }
            pstmt = conn.prepareStatement(sql);
            rs = pstmt.executeQuery();
        } catch (SQLException e1) {
            logger.error(e1.getMessage());
        }
        return rs;
    }

    /**
     * 关闭所有的接口 (注意括号中的参数)
     */
    public void closeAll() {
        if (stmt != null) {
            try {
                stmt.close();
                stmt = null;
            } catch (Exception e) {
                logger.error(e.getMessage());
            }
        }
        // 判断是否关闭,要时没有关闭,就让它关闭,并给它附一空值(null),下同
        if (pstmt != null) {
            try {
                pstmt.close();
                pstmt = null;
            } catch (SQLException e) {
                logger.error(e.getMessage()); // 异常处理
            }
        }
        if (rs != null) {
            try {
                rs.close();
                rs = null;
            } catch (SQLException e) {
                logger.error(e.getMessage()); // 异常处理
            }
        }
        if (conn != null) {
            try {
                conn.close();
                conn = null;
            } catch (SQLException e) {
                logger.error(e.getMessage()); // 异常处理
            }
        }
    }

    /**
     * 检查数据库连接
     *
     * @param manager
     * @return true:无法连接;false:正常
     */
    public boolean checkCon(DBCommandUtils manager) {
        boolean result = false;
        try {
            result = getConn().isClosed();
        } catch (SQLException e) {
            logger.error(e.getMessage());
        }
        return result;
    }

    /**
     * 编写测试类来进行对数据库的检验
     */
    public static void main(String[] args) {
        DBCommandUtils manager = new DBCommandUtils();
        try {
            System.out.println(manager.getConn().isClosed());
        } catch (SQLException e) {
            logger.error(e.getMessage()); // 抛出异常
        }
    }


这个玩意就可以直接拿来用了,其实还是很不错的玩意。。。

自然是没有使用关系型框架舒服了。

不过: 有了这个有时候不用框架也是比较舒服的。


Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak Jul 18, 2024 am 05:48 AM

Keluaran terbaharu Apple bagi sistem iOS18, iPadOS18 dan macOS Sequoia telah menambah ciri penting pada aplikasi Photos, yang direka untuk membantu pengguna memulihkan foto dan video yang hilang atau rosak dengan mudah disebabkan pelbagai sebab. Ciri baharu ini memperkenalkan album yang dipanggil "Dipulihkan" dalam bahagian Alat pada apl Foto yang akan muncul secara automatik apabila pengguna mempunyai gambar atau video pada peranti mereka yang bukan sebahagian daripada pustaka foto mereka. Kemunculan album "Dipulihkan" menyediakan penyelesaian untuk foto dan video yang hilang akibat kerosakan pangkalan data, aplikasi kamera tidak disimpan ke pustaka foto dengan betul, atau aplikasi pihak ketiga yang menguruskan pustaka foto. Pengguna hanya memerlukan beberapa langkah mudah

Bagaimana untuk menilai keberkesanan kos sokongan komersial untuk rangka kerja Java Bagaimana untuk menilai keberkesanan kos sokongan komersial untuk rangka kerja Java Jun 05, 2024 pm 05:25 PM

Menilai kos/prestasi sokongan komersial untuk rangka kerja Java melibatkan langkah-langkah berikut: Tentukan tahap jaminan yang diperlukan dan jaminan perjanjian tahap perkhidmatan (SLA). Pengalaman dan kepakaran pasukan sokongan penyelidikan. Pertimbangkan perkhidmatan tambahan seperti peningkatan, penyelesaian masalah dan pengoptimuman prestasi. Timbang kos sokongan perniagaan terhadap pengurangan risiko dan peningkatan kecekapan.

Bagaimana untuk mengendalikan ralat sambungan pangkalan data dalam PHP Bagaimana untuk mengendalikan ralat sambungan pangkalan data dalam PHP Jun 05, 2024 pm 02:16 PM

Untuk mengendalikan ralat sambungan pangkalan data dalam PHP, anda boleh menggunakan langkah berikut: Gunakan mysqli_connect_errno() untuk mendapatkan kod ralat. Gunakan mysqli_connect_error() untuk mendapatkan mesej ralat. Dengan menangkap dan mengelog mesej ralat ini, isu sambungan pangkalan data boleh dikenal pasti dan diselesaikan dengan mudah, memastikan kelancaran aplikasi anda.

Bagaimanakah keluk pembelajaran rangka kerja PHP berbanding rangka kerja bahasa lain? Bagaimanakah keluk pembelajaran rangka kerja PHP berbanding rangka kerja bahasa lain? Jun 06, 2024 pm 12:41 PM

Keluk pembelajaran rangka kerja PHP bergantung pada kecekapan bahasa, kerumitan rangka kerja, kualiti dokumentasi dan sokongan komuniti. Keluk pembelajaran rangka kerja PHP adalah lebih tinggi jika dibandingkan dengan rangka kerja Python dan lebih rendah jika dibandingkan dengan rangka kerja Ruby. Berbanding dengan rangka kerja Java, rangka kerja PHP mempunyai keluk pembelajaran yang sederhana tetapi masa yang lebih singkat untuk bermula.

Apakah Bitget Launchpool? Bagaimana untuk menggunakan Bitget Launchpool? Apakah Bitget Launchpool? Bagaimana untuk menggunakan Bitget Launchpool? Jun 07, 2024 pm 12:06 PM

BitgetLaunchpool ialah platform dinamik yang direka untuk semua peminat mata wang kripto. BitgetLaunchpool menonjol dengan produknya yang unik. Di sini, anda boleh mempertaruhkan token anda untuk membuka kunci lebih banyak ganjaran, termasuk airdrop, ganjaran yang tinggi dan kumpulan hadiah yang murah eksklusif untuk peserta awal. Apakah BitgetLaunchpool? BitgetLaunchpool ialah platform mata wang kripto di mana token boleh dipertaruhkan dan diperoleh dengan terma dan syarat yang mesra pengguna. Dengan melabur BGB atau token lain dalam Launchpool, pengguna berpeluang menerima airdrop percuma, pendapatan dan mengambil bahagian dalam kumpulan bonus yang murah hati. Pendapatan daripada aset yang dicagarkan dikira dalam masa T+1 jam dan ganjaran adalah berdasarkan

Bagaimanakah pilihan rangka kerja PHP yang ringan mempengaruhi prestasi aplikasi? Bagaimanakah pilihan rangka kerja PHP yang ringan mempengaruhi prestasi aplikasi? Jun 06, 2024 am 10:53 AM

Rangka kerja PHP yang ringan meningkatkan prestasi aplikasi melalui saiz kecil dan penggunaan sumber yang rendah. Ciri-cirinya termasuk: saiz kecil, permulaan pantas, penggunaan memori yang rendah, kelajuan dan daya tindak balas yang dipertingkatkan, dan penggunaan sumber yang dikurangkan: SlimFramework mencipta API REST, hanya 500KB, responsif yang tinggi dan daya pemprosesan yang tinggi.

Prinsip pertaruhan Astar, pembongkaran pendapatan, projek dan strategi airdrop & strategi peringkat pengasuh operasi Prinsip pertaruhan Astar, pembongkaran pendapatan, projek dan strategi airdrop & strategi peringkat pengasuh operasi Jun 25, 2024 pm 07:09 PM

Jadual Kandungan Prinsip Staking Astar Dapp Staking Hasil Pembongkaran Projek Airdrop Berpotensi: AlgemNeurolancheHealthreeAstar Degens DAOVeryLongSwap Staking Strategi & Operasi "AstarDapp Staking" telah dinaik taraf kepada versi V3 pada awal tahun ini, dan banyak pelarasan telah dibuat pada staking peraturan. Pada masa ini, kitaran pertaruhan pertama telah tamat, dan kitaran kecil "pengundian" kitaran pertaruhan kedua baru sahaja bermula. Untuk mendapatkan faedah "ganjaran tambahan", anda perlu memahami peringkat kritikal ini (dijangka akan berlangsung sehingga 26 Jun, berbaki kurang daripada 5 hari). Saya akan memecahkan pendapatan pertaruhan Astar secara terperinci,

Bagaimana untuk menyimpan data JSON ke pangkalan data di Golang? Bagaimana untuk menyimpan data JSON ke pangkalan data di Golang? Jun 06, 2024 am 11:24 AM

Data JSON boleh disimpan ke dalam pangkalan data MySQL dengan menggunakan perpustakaan gjson atau fungsi json.Unmarshal. Pustaka gjson menyediakan kaedah kemudahan untuk menghuraikan medan JSON dan fungsi json.Unmarshal memerlukan penuding jenis sasaran kepada data JSON unmarshal. Kedua-dua kaedah memerlukan penyediaan pernyataan SQL dan melaksanakan operasi sisipan untuk mengekalkan data ke dalam pangkalan data.

See all articles