当前位置: 首页 > 知识库问答 >
问题:

我正在获取MySQL服务器版本,以便在“.null”附近使用正确的语法

邬令
2023-03-14

我得到了这个错误,我不知道为什么我在workbench上尝试了这个语句,它起作用了。我也在寻找改进我的日期减法代码,基本上,我从表中得到deadline并从今天的日期中减去。

public boolean checkLessThanWeek(User userWhoWantsToExtendDeadline,BorrowedBook book) throws ParseException {
    try {
        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT Deadline FROM library_students.borrowedcopies WHERE LenderToID =" + "'" + userWhoWantsToExtendDeadline.getId()+ "'"+"And Barcode="+"."+book.getbookID());
        if (rs.next()) {             
            SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
            Date deadline = format.parse(rs.getString(1));
            Date date=new Date();
            String today=format.format(date.getDate());
            date = format.parse(today);
            long milliseconds=date.getTime()-deadline.getTime();
            long days = milliseconds / (1000 * 60 * 60 * 24);
            System.out.print(days);

        }
        rs.close();
        return true;
    } catch (SQLException ex) {
        ex.printStackTrace();
        return false;
    }
} 

共有1个答案

丁文轩
2023-03-14

这很可能是因为book.getBookId()返回null,并且由于某种原因,SQL中前面有一个点(.)。此外,最好使用使用参数化Sql语句,而且基本的错误处理也是一件好事。

if (userWhoWantsToExtendDeadline == null || book == null || book.getbookID() == null {
    //throw exception perhaps or log?
    return false;
}

String query = "SELECT Deadline FROM library_students.borrowedcopies WHERE LenderToID = ? AND Barcode = ?";
Statement stmt = con.createStatement(query);

stmt.setInt(1, userWhoWantsToExtendDeadline.getId());
stmt.setString(2, book.getbookID());
ResultSet rs = stmt.executeQuery();

注意,我假设您的第一个参数是int,第二个参数是string,但当然可能需要更改

 类似资料:
  • 当我导入数据库时,我在PHPMyadmin中遇到了一些问题。 您的SQL语法有错误;检查与您的MySQL server版本相对应的手册,以了解在第3行“”附近使用的正确语法(`form_id`varchar(18)COLLATE utf8_general_ci;NOT NULL DEFAULT“,) 有人知道我该怎么解决吗?

  • 问题内容: 我有一个Java代码: 然后我有SQLException: 您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以在’?’附近使用正确的语法。 问题答案: 您应该执行不带任何参数的,如下所示: 使用参数调用将按原样执行提供的查询(没有绑定参数)。

  • 语法中有错误;查看与服务器版本相对应的手册,以了解第1行附近使用的正确语法 当我试图为我的帐单应用程序生成帐单时,上面的错误将会出现。下面是我的应用程序的代码。请给我一些解决这个错误的方法..................

  • 这是一个已经用自己的语法运行SQLServer2005的存储过程,我在这里用mysql语法编写了这个存储过程。一切正常,但最后一个结束语句显示错误。 定界符$$ 创建定义者=@程序(在DATE,在DATE,在DOUBLE,在DOUBLE,在DOUBLE,在DOUBLE,在 dcVARCHAR(25)开始) 结束$$分隔符;

  • 问题内容: 我有这样的存储过程: 但是它给出了错误: -您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以在第3行的’‘附近使用正确的语法 错误是什么意思?第2行有什么问题? 问题答案: 在使用触发器,存储过程等之前,必须先更改定界符。

  • 未捕获的mysqli_sql_exception:您的SQL语法中有一个错误;请检查与您的MariaDB服务器版本相对应的手册,以获得在“near”中使用的正确语法?在第2行按'score'desc'排序。.. 我已经研究了在‘?’附近使用的正确语法。但我认为我的问题不同。