gpt4 book ai didi

java - 从数据库中的不同表检索数据发送要执行的SQL代码,返回数据?

转载 作者:行者123 更新时间:2023-11-29 13:23:53 24 4
gpt4 key购买 nike

我正在用 Java 创建一个类来连接数据库并以其他方式与我在其他地方设置的数据库进行通信。我想对语句使用executeQuery 方法,并接收一个ResultSet,从中我将检索ResultSet 中接收到的信息。

我的问题与 SQL 命令有关,如下所示;我发送到数据库的查询。似乎出了什么问题,我在发送命令时收到了 SQLException,这意味着我一定做错了什么。也许我写错了什么?我无法判断,因为我只是尝试尽我所能遵循为本类(class)提供的示例指导。

这是我尝试发送的查询:

"SELECT fr.DepartureLocation, fr.Destination, d.Date, d.Time FROM `FlightRoute` fr,
`Departure` d WHERE d.FlightRouteId = fr.Id AND d.Date > " + dateFrom + " AND
d.Date < " + dateTo + " AND fr.Destination = `" + destination + "`;"

“dateFrom”、“dateTo”和“destination”都是我调用的方法的参数,我试图将从此语句中获得的结果限制为特定日期范围内的结果以及有特定的目的地。我可能会补充一点,日期是排列的整数,如下所示:20131205这应该会使以后的日期数字更高。

我在 SQL 代码中使用参数的方式是否错误,或者我在这里编写了普遍错误的 SQL 代码?

非常感谢任何能够提供正确的 SQL 代码供我使用的人,以便我可以看到我做错了什么(因为我必须制作更多类似的工作 SQL 语句)!提前致谢! :)

编辑:这是所请求的代码,我在其中宣布查询并尝试执行它:

try
{
ArrayList<Departure> departures = new ArrayList<>();
Statement stmt = con.createStatement();
System.out.println("derp0");
String query = "SELECT fr.DepartureLocation, fr.Destination, d.Date, d.Time FROM FlightRoute fr, Departure d WHERE d.FlightRouteId = fr.Id AND d.Date > " + dateFrom + " AND d.Date < " + dateTo + " AND fr.Destination = `" + destination + "`;";
System.out.println("derp0.1");
ResultSet rs = stmt.executeQuery(query);
System.out.println("derp1");

简单解释一下,souts是为了检查SQLException发生在哪里,我只能说异常发生在“derp0.1”之后。

最佳答案

我建议进行以下更改:

PreparedStatement ps = connection.prepareStatement(
"SELECT fr.DepartureLocation, fr.Destination, d.Date, d.Time FROM `FlightRoute` fr,"+
"`Departure` d WHERE d.FlightRouteId = fr.Id AND d.Date > ? AND d.Date < ? "+
" AND fr.Destination = ?");

ps.setDate(1, dateFrom);
ps.setDate(2, dateTo);
ps.setString(3, destination); //assuming destination is a String

ResultSet rs = ps.executeQuery();

在 JDBC 中,您应该始终使用参数化,如上所述。它还可能会解决您的问题,该问题可能是由无效的日期格式引起的。

关于java - 从数据库中的不同表检索数据发送要执行的SQL代码,返回数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20400509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com