首頁 資料庫 mysql教程 JDBC操作技巧

JDBC操作技巧

Jun 07, 2016 pm 03:29 PM
jdbc 工具 技巧 操作 資料庫 連接

对于纯JDBC连接数据库连接工具如下: public static final String DBDRIVER=com.microsoft.sqlserver.jdbc.SQLServerDriver; public static final String DBURL=jdbc:sqlserver://10.81.35.35:1433;databaseName=Company; public static final String DBUSER

对于纯JDBC连接数据库连接工具如下:

public static final String DBDRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver";
    public static final String DBURL="jdbc:sqlserver://10.81.35.35:1433;databaseName=Company";
    public static final String DBUSERNAMW="sa";
    public static final String DBPSD="1111111";
    private Connection conn=null;
   
    public DataBaseConnection(){
        try{
            Class.forName(DBDRIVER);
            conn=DriverManager.getConnection(DBURL,DBUSERNAMW,DBPSD);
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public Connection getConnection(){
        return this.conn ;
    }
   
    public void close() throws SQLException{
        if(this.conn!=null){
            conn.close();
        }
    }
登入後複製

然后我们便是采用PreparedStatement对SQL语句进行预处理,如下:
PreparedStatement pstm = null;
        String sql = "insert into Person(UserName,Password) values(?,?)";
        try {
            pstm = this.conn.prepareStatement(sql);
            pstm.setString(1, person.getUserName());
            pstm.setString(2, person.getPassword());
            int count = pstm.executeUpdate();
            if (count > 0) {
                flag = true;
            }
        } catch (Exception e) {
            throw e;
        } finally {
            try {
                pstm.close();
            } catch (Exception e) {
            }
        }
登入後複製

这是我们最常用的一种操作方式,可是问题就来了,我们所要操作的,必须对sql中的字段很明确,比如我们按条件来查询的时候,我们就必须对条件的字段很清楚,可是,当数据库字段增多的时候,我们所要查询的条件规则很多,是不是每一个条件,我们就要写一个方法呢?显然,这种是直接的思维,然而这样思维却增加了很多代码的冗余,又或者说是,每次变换条件或者新增条件的时候,我们都必须对方法进行修改,甚至是增加。于是乎,我们想有没有一种方式可以传递字段名称进去查询,如where ?=?

本人亲测,这种方式是不存在的,因为预处理字段的时候,PreparedStatement会自动在字符串上加引号,那此时就不能达到我们想要的效果(如想要的是where name=? 得到的却是 where 'name'=?),本人曾经在这样的问题上纠结了很久。最终找到一种破解的方式,这里借鉴了IBatis的Map传参方式。希望同行爱好者,我们除了要学会使用框架或插件,得找个时间去研究一下它的原理(源码)哦。

对于where ?=? 显然是不可取,但是对于字符串占位就可以的。例子如下:

public List<person> findByParams(Map<string object> params)
            throws Exception {
        Iterator it = params.entrySet().iterator();
        List<person> list = new ArrayList<person>();
        Person person = null;
        String key = null;
        Object value = null;
        PreparedStatement pstm = null;
        while (it.hasNext()) {
            Map.Entry<string object> entry = (Map.Entry<string object>) it
                    .next();
            key = entry.getKey();
            value = entry.getValue();
        }
      <span style="color:#FF0000;">  String sql = String.format(
                "select userid,username,password from person where %s=?", key);</span>
        pstm = this.conn.prepareStatement(sql);
        pstm.setObject(1, value);
        ResultSet rs = pstm.executeQuery();
        while(rs.next()) {
            person = new Person();
            person.setUserID(rs.getInt(1));
            person.setUserName(rs.getString(2));
            person.setPassword(rs.getString(3));
        }
        rs.close();
        pstm.close();
        return list;
    }</string></string></person></person></string></person>
登入後複製

哈哈 此种方式可以替代where ?=?,参照ibatis

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
數字貨幣app是啥軟件?全球數字貨幣十大app盤點 數字貨幣app是啥軟件?全球數字貨幣十大app盤點 Apr 30, 2025 pm 07:06 PM

隨著數字貨幣的普及和發展,越來越多的人開始關注和使用數字貨幣app。這些應用程序為用戶提供了便捷的管理和交易數字資產的方式。那麼,數字貨幣app到底是什麼軟件呢?讓我們深入了解,並盤點全球十大數字貨幣app。

量化交易所排行榜2025 數字貨幣量化交易APP前十名推薦 量化交易所排行榜2025 數字貨幣量化交易APP前十名推薦 Apr 30, 2025 pm 07:24 PM

交易所內置量化工具包括:1. Binance(幣安):提供Binance Futures量化模塊,低手續費,支持AI輔助交易。 2. OKX(歐易):支持多賬戶管理和智能訂單路由,提供機構級風控。獨立量化策略平台有:3. 3Commas:拖拽式策略生成器,適用於多平台對沖套利。 4. Quadency:專業級算法策略庫,支持自定義風險閾值。 5. Pionex:內置16 預設策略,低交易手續費。垂直領域工具包括:6. Cryptohopper:雲端量化平台,支持150 技術指標。 7. Bitsgap:

數字貨幣app是正規的嗎?全球正規合法虛擬幣交易app前十 數字貨幣app是正規的嗎?全球正規合法虛擬幣交易app前十 Apr 30, 2025 pm 07:09 PM

推薦的加密貨幣交易平台包括:1. Binance:全球最大交易量,支持1400 幣種,FCA、MAS認證。 2. OKX:技術實力強,支持400 幣種,香港證監會批准。 3. Coinbase:美國最大合規平台,適合新手,SEC和FinCEN監管。 4. Kraken:歐洲老牌,ISO 27001認證,持美國MSB及英國FCA牌照。 5. Gate.io:幣種最全(800 ),低交易費,獲多國牌照。 6. Huobi Global:老牌平台,提供多種服務,持日本FSA及香港TCSP牌照。 7. KuCoin

數字貨幣app有前途嗎 蘋果手機數字貨幣交易平台app下載TOP10 數字貨幣app有前途嗎 蘋果手機數字貨幣交易平台app下載TOP10 Apr 30, 2025 pm 07:00 PM

數字貨幣App的前景廣闊,具體體現在:1. 技術創新驅動功能升級,通過DeFi與NFT融合及AI與大數據應用提升用戶體驗;2. 監管合規化趨勢,全球框架完善及AML、KYC要求趨嚴;3. 功能多元化與服務拓展,整合借貸、理財等服務並優化用戶體驗;4. 用戶基數與全球化擴張,預計2025年用戶規模突破10億。

香港數字貨幣交易所app如何下載 十大數字貨幣交易所APP盤點 香港數字貨幣交易所app如何下載 十大數字貨幣交易所APP盤點 Apr 30, 2025 pm 07:12 PM

下載香港數字貨幣交易所APP的方法包括:1. 選擇合規平台,如OSL、HashKey或Binance HK等;2. 通過官方渠道下載,iOS用戶在App Store下載,Android用戶通過Google Play或官網下載;3. 註冊並驗證身份,使用香港手機號或郵箱,上傳身份和地址證明;4. 設置安全措施,啟用雙重身份驗證並定期檢查賬戶活動。

永續倉位的資金費 永續倉位的資金費 Apr 30, 2025 pm 06:42 PM

永續倉位的資金費是持倉者在永續合約交易中需支付或收取的費用,通常每八小時計算一次,影響交易者的盈虧和策略。

幣安廣場怎麼樣可靠嗎 幣安廣場怎麼樣可靠嗎 May 07, 2025 pm 07:18 PM

幣安廣場(Binance Square)是幣安交易所提供的一個社交媒體平台,旨在為用戶提供一個交流和分享加密貨幣相關信息的空間。本文將詳細探討幣安廣場的功能、可靠性以及用戶體驗,幫助你更好地了解這個平台。

Mongodb注定要失敗嗎?消除神話 Mongodb注定要失敗嗎?消除神話 May 03, 2025 am 12:06 AM

MongoDB並未註定要沒落。 1)其優勢在於靈活性和可擴展性,適合處理複雜數據結構和大規模數據。 2)劣勢包括高內存使用和較晚引入的ACID事務支持。 3)儘管存在性能和事務支持的質疑,但MongoDB通過技術改進和市場需求的推動,仍然是一個強大的數據庫解決方案。

See all articles