java - 对于PreparedStatement 类型,方法 getInt、getString 和 getDate 未定义

标签 java rest api jdbc prepared-statement

您好,我不断收到此错误: 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/

相关文章:

api - 提升 REST 服务无法识别 PUT 请求

python - 使用 Python 从 JSON API 中提取数据

java - 在android中使用异常

java - 获取格林威治标准时间

java - 如何在spring中从rest url获取包含问号(?)的参数

PHP - 带有分页功能的 Twitter API (OAuth) 无法正常工作

java - 作为 jar 文件运行时返回字符串作为 JSON 响应失败并显示 500 状态代码

java - 如何知道mysql表中数据被更新(即数据删除、修改或插入),从而更新java中的json对象

javascript - 使用纯 Javascript 页面访问force.com REST API

javascript - Spotify api 1.0.0 获取给定轨道集的播放列表的图像