程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何使用带有日期的用户参数在 Java 中编写 MySQL 查询[重复]

发布于2024-11-02 21:01     阅读(516)     评论(0)     点赞(28)     收藏(4)


首先感谢大家之前的帮助和建议。我只是在学习数据库和 MySQL,所以请耐心听我问一些新手类型的问题。

我输入了 2 个参数,一个是字符串,另一个是日期。然后我想输出另一个值。字符串很简单,但我无法正确比较日期。如果日期和字符串匹配,那么这就是我要查找的记录

这是表格的副本

    private String agentDetail = "CREATE TABLE AgentDetail (" 
        + "idNo INT(64) NOT NULL AUTO_INCREMENT,"  
        + "initials VARCHAR(2)," 
        + "agentDate DATE,"  
        + "agentCount INT(64), "
        + "PRIMARY KEY(idNo))"; 

问题是它总是返回所有日期,包括正确和不正确的结果

这是我目前正在使用的代码

    protected void getAgentIdNo (Connection con, PreparedStatement preStatement,
                ResultSet result, String initials, Date myDate) {
        try {
            preStatement = con.prepareStatement("SELECT * FROM AGENTDETAIL");
            result = preStatement.executeQuery();

            while (result.next()) {
                if (result.getString("initials").equals(initials)){
                    if (myDate.compareTo(result.getDate("agentDate")) == 0){
                        System.out.println("The date and initials matched !!");
                        System.out.println("The id no is " + result.getint("idNo");
                    }
                }
            }
        }

        catch (SQLException ex) {
            System.out.println("An error occured when reading from the data base");
            ex.printStackTrace();
        }
    }

我也知道这个代码远非完美,因此想建议一个看起来更专业的代码。在此先感谢大家的帮助和支持。


解决方案


我建议不要通过编程来制作过滤器,而是(在这种情况下进行 SQL 查询)。

您可以执行以下操作:

protected void getAgentIdNo (Connection con, PreparedStatement preStatement,
                ResultSet result, String initials, Date myDate) {
        try {
            preStatement = con.prepareStatement("SELECT * FROM AGENTDETAIL as ag WHERE ag.initial = ? AND date = ?");
            preStatment.setSring(1,initials);
            preStatment.setString(2,date);
            result = preStatement.executeQuery();

        while (result.next()) {
                    System.out.println("The date and initials matched !!");
                    System.out.println("The id no is " + result.getint("idNo");
            }
        }
    }

    catch (SQLException ex) {
        System.out.println("An error occured when reading from the data base");
        ex.printStackTrace();
    }
}

注意:如需了解更多详细信息,请参阅链接。

希望有帮助^^



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/691846/834255e207700f4edbfb/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

28 0
收藏该文
已收藏

评论内容:(最多支持255个字符)