首页 数据库 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

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 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教程
1671
14
CakePHP 教程
1428
52
Laravel 教程
1331
25
PHP教程
1276
29
C# 教程
1256
24
ok交易所国内如何注册?ok交易平台大陆新手注册使用指南 ok交易所国内如何注册?ok交易平台大陆新手注册使用指南 May 08, 2025 pm 10:51 PM

在加密货币市场中,选择一个可靠的交易平台是至关重要的。OK交易平台作为全球知名的数字资产交易所,吸引了大量大陆新手用户。本指南将详细介绍如何在OK交易平台上进行注册和使用,帮助新手用户快速上手。

币圈十大加密货币交易所排行榜 十大数字货币交易平台2025年最新排名 币圈十大加密货币交易所排行榜 十大数字货币交易平台2025年最新排名 May 08, 2025 pm 10:45 PM

币圈十大加密货币交易所排名:1. Binance:全球领先,提供高效交易和多种金融产品。2. OKX:创新多样,支持多种交易类型。3. Huobi:稳定可靠,服务优质。4. Coinbase:新手友好,界面简洁。5. Kraken:专业交易者首选,工具强大。6. Bitfinex:高效交易,交易对丰富。7. Bittrex:安全合规,监管合作。8. Poloniex等等。

币安binance有手机APP吗?币安binance官网手机版安卓APP推荐 币安binance有手机APP吗?币安binance官网手机版安卓APP推荐 May 08, 2025 pm 10:12 PM

币安(Binance)作为全球领先的加密货币交易平台,提供了多种方式让用户方便地进行交易和管理资产。其中,币安手机APP是许多用户选择的工具之一。以下详细介绍币安官方安卓APP的下载和使用方法。

币安binance网页版入口 币安binance交易所网页版直接进 币安binance网页版入口 币安binance交易所网页版直接进 May 08, 2025 pm 11:03 PM

全球领先的加密货币交易平台,以其高效、安全和多样化的交易服务闻名于世。无论你是经验丰富的交易者还是初入加密货币市场的新手,币安Binance都能提供你所需的工具和资源。通过币安Binance网页版,用户可以轻松访问交易平台,无需下载任何应用程序,直接通过浏览器进行交易操作。本文将详细介绍如何进入币安Binance交易所网页版,并提供一些实用的交易技巧和注意事项。

易欧官方网站入口 易欧交易所苹果入口官方进入 易欧官方网站入口 易欧交易所苹果入口官方进入 May 08, 2025 pm 11:12 PM

全球知名的数字货币交易平台,成立于2014年,致力于为用户提供安全、便捷的数字资产交易服务。作为一家国际化的交易所,易欧支持多种主流和小众数字货币的交易,吸引了来自世界各地的用户。无论是新手还是经验丰富的交易者,都可以在易欧平台上找到适合自己的交易工具和服务。

okx网页版登录入口地址 okx欧意交易所官网登录 okx网页版登录入口地址 okx欧意交易所官网登录 May 08, 2025 pm 10:27 PM

OKX,原名OKEx,是一家成立于2017年的全球领先的加密货币交易所。作为一家提供多种数字资产交易服务的平台,OKX致力于为用户提供安全、便捷和高效的交易体验。OKX的服务范围涵盖了现货交易、合约交易、杠杆交易、币币交易等多种交易模式,并且支持超过100种加密货币的交易对。除了交易服务,OKX还提供钱包服务、借贷服务以及 staking 等多种金融产品,以满足不同用户的需求。

2025年5月份牛市怎么入场 入场交易所推荐 2025年5月份牛市怎么入场 入场交易所推荐 May 12, 2025 pm 08:51 PM

2025年5月份牛市交易所推荐:1、币安;2、OKX;3、火币;4、gate.io;5、芝麻开门等交易所。上述交易所安全可靠,并且支持多种币种,本文提供详细下载入口地址。

欧意链接最新 欧意okx平台官方最新链接 欧意链接最新 欧意okx平台官方最新链接 May 08, 2025 pm 10:57 PM

作为全球领先的数字资产交易平台,凭借其高效、安全和用户友好的体验,吸引了大量的投资者和交易者。无论你是初次接触加密货币市场,还是经验丰富的交易专家,欧意OKX都提供了丰富的交易工具和服务,以满足不同层次用户的需求。近期,欧意OKX发布了最新的官方链接,以确保用户能够安全、便捷地访问平台,进行交易和资产管理。

See all articles