您好,我不断收到此错误: PreparedStatement 类型未定义 getInt(String/int/Date) 方法 (IDE 中显示的每个错误: 以下几行:
int placeNo = myStmt.getInt("NR_MIEJSCA");
Date start = myStmt.getDate("START");
Date end = myStmt.getDate("KONIEC");
String userName = myStmt.getString("IMIE_NAZWISKO");
int phone = myStmt.getInt("TELEFON");
这是我发送特定 parking 位 ID 查询的方法:
public List<Book> getSpecBook(int id) throws Exception {
List<Book> books = new ArrayList<>();
//int idInt = Integer.parseInt(id);
Connection myConn = null;
PreparedStatement myStmt = null;
ResultSet myRs = null;
try {
myConn = dataSource.getConnection();
// create sql statement
String sql = "SELECT * FROM `rezerwacje_miejsc` WHERE `NR_MIEJSCA`=?";
myStmt = myConn.prepareStatement(sql);
myStmt.setInt(1, id);
myRs = myStmt.executeQuery();
while (myRs.next()) {
// retrive data from result set row
int placeNo = myStmt.getInt("NR_MIEJSCA");
Date start = myStmt.getDate("START");
Date end = myStmt.getDate("KONIEC");
String userName = myStmt.getString("IMIE_NAZWISKO");
int phone = myStmt.getInt("TELEFON");
// create new temporary Book object
Book tempBook = new Book(placeNo, start, end, userName, phone);
// add it to our list of Books
books.add(tempBook);
}
return books;
} finally {
// clean up JDBC objects
close(myConn, myStmt, myRs);
}
}
这是我的 API 类:
package com.pbs.web.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.pbs.web.jdbc.ParkingBookSystem.Book;
import com.pbs.web.jdbc.ParkingBookSystem.BookDbUtil;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.List;
@Path("books")
@Produces(MediaType.APPLICATION_JSON)
public class BookingRestController {
private BookDbUtil bookDbUtil = new BookDbUtil();
@GET
@Path("/")
public Response getAllBooks() throws Exception {
List<Book> books = bookDbUtil.getBooks();
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(books);
return Response.ok().entity(json).build();
}
@GET
@Path("/{id}")
public Response getSpecBook(@PathParam("id") int id) throws Exception {
List<Book> books = bookDbUtil.getSpecBook(id);
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(books);
return Response.ok().entity(json).build();
}
}
我认为我准备好的声明有问题,但我找不到问题所在。
最佳答案
您正在对PreparedStatement 调用getInt() 和getDate()。这些功能在那里不存在:https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html .
但是,它们确实存在于结果集中;): https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html
所以代替这个:
while (myRs.next()) {
// retrive data from result set row
int placeNo = myStmt.getInt("NR_MIEJSCA");
Date start = myStmt.getDate("START");
Date end = myStmt.getDate("KONIEC");
String userName = myStmt.getString("IMIE_NAZWISKO");
int phone = myStmt.getInt("TELEFON");
// create new temporary Book object
Book tempBook = new Book(placeNo, start, end, userName, phone);
// add it to our list of Books
books.add(tempBook);
}
试试这个:
while (myRs.next()) {
// retrive data from result set row
int placeNo = myRs.getInt("NR_MIEJSCA");
Date start = myRs.getDate("START");
Date end = myRs.getDate("KONIEC");
String userName = myRs.getString("IMIE_NAZWISKO");
int phone = myRs.getInt("TELEFON");
// create new temporary Book object
Book tempBook = new Book(placeNo, start, end, userName, phone);
// add it to our list of Books
books.add(tempBook);
}
关于java - 对于PreparedStatement 类型,方法 getInt、getString 和 getDate 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52159353/