Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java I';我正在获取MySQL服务器版本,以便在';附近使用正确的语法;。空';_Java_Sql_Database_Mysql Workbench - Fatal编程技术网

Java I';我正在获取MySQL服务器版本,以便在';附近使用正确的语法;。空';

Java I';我正在获取MySQL服务器版本,以便在';附近使用正确的语法;。空';,java,sql,database,mysql-workbench,Java,Sql,Database,Mysql Workbench,我得到了这个错误,我不知道为什么我在workbench上尝试了这个语句,它成功了。 我还希望改进我的日期减法代码,基本上我从表中得到截止日期,从今天的日期中减法 public boolean checkLessThanWeek(User userWhoWantsToExtendDeadline,BorrowedBook book) throws ParseException { try { Statement stmt = con.createStatement();

我得到了这个错误,我不知道为什么我在workbench上尝试了这个语句,它成功了。 我还希望改进我的日期减法代码,基本上我从表中得到截止日期,从今天的日期中减法

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;
    }
} 

这很可能是因为
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
,第二个参数是
字符串
,但当然可能需要更改

您需要在
“+”和
中留出一个空格,即
“+”和
。和
Barcode=“+”+book.getbookID()
看起来不正确;是否应该用撇号括起来?另外,book.getbookID()返回null。in取决于book.getbookID()是否为空返回字符串然后是,它必须用撇号括起来。如果返回数字然后是否@Pulszar,因为它返回null,我假设它可能返回字符串。您应该将错误消息添加到原始帖子中。您应该使用参数绑定,而不是手动连接。Yeah getBookID()返回null时控制器出错谢谢