gpt4 book ai didi

java - JDBC SQLite : Retrieval Operation - loops without stopping? |

转载 作者:太空宇宙 更新时间:2023-11-04 10:04:02 25 4
gpt4 key购买 nike

我的程序允许用户控制执行任何 CRUD 操作在 Sqlite 数据库上。

但是,我的“搜索一辆车”方法多次输出查询,直到出现异常,该异常指向返回语句。

连接

enter image description here

返回声明

enter image description here

---------------------以下是我所做/查看/尝试的内容:

  1. While 循环:我尝试:“将条件设置为假然后为真”。
    “用整数设置条件以循环有限次数”。他们两者都输出相同的异常。
  2. 返回语句:没有其他表达式/变量可以放入返回语句。我不知道,因为该方法是基于一个类,因此它必须返回该对象类。

我做错了什么让它不断循环?

The method with exceptionDAO 类:

 import java.sql.SQLException;  
import java.util.ArrayList;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class CasualDAO {

private static Connection getDBConnection(){

Connection dbConnection=null;
try{
Class.forName("org.sqlite.JDBC");
}catch(ClassNotFoundException e){
System.out.println(e.getMessage());}
try{
String dbURL="jdbc:sqlite:casual.sqlite";
dbConnection=DriverManager.getConnection(dbURL);
return dbConnection;
}catch(SQLException e){
System.out.println(e.getMessage());
}
return dbConnection;

}

public Casual getCasual(int c) throws SQLException{

Connection dbConnection=null;
Statement statement=null;
ResultSet result= null;
String query="SELECT * FROM casual WHERE id="+c+";";

try{
dbConnection=getDBConnection();
statement= dbConnection.createStatement();

System.out.println(query);
result=statement.executeQuery(query);

while(result.next()){

System.out.println(result.getInt("id")+result.getString("first_name")+result.getString("last_name")+result.getString("adress"));

}}catch(SQLException e){
e.getMessage();}
finally{
if(result!=null){
result.close();
}
if(statement!=null){
statement.close();
}
if(dbConnection!=null){
dbConnection.close();
}
}
return getCasual(c);

}



}

Controller :

import java.util.Scanner;
import java.sql.SQLException;
import java.util.ArrayList;

public class Control {

public static void main(String[] args) {

CasualDAO thevehicle= new CasualDAO();

Scanner in= new Scanner(System.in);
System.out.println("Crud Operations");
System.out.println( "Enter operation");
System.out.println("Search = 1 "+"Insert = 2 "+"Delete = 3 "+"Update
= 4 ");
String operation=in.next();

if(operation.equals("1")){
try{
thevehicle.getCasual(1);
}catch(SQLException e){
e.printStackTrace();
}

}

最佳答案

在方法中从类创建一个对象,并将参数存储在那里。除了添加参数之外,在 Controller 中执行相同的操作

我在名为(“Casual cass=null”)的casual类型的方法中创建了一个对象。它首先设置为 null,因为它没有立即使用。然后,在“while循环”中,用“new Casual(id,firstname,lastname,adress)”覆盖它,这次包含参数。

在 Controller 中,我创建了另一个“Casual”对象,这次包含casualDao.getCasual(1)。 1 代表查询中的特定 id。

public Casual getCasual(int c) throws SQLException{

Connection dbConnection=null;
Statement statement=null;
ResultSet result= null;
Casual cass=null;
String query="Select * from casual WHERE id="+c+";";

try{
dbConnection=getDBConnection();
statement= dbConnection.createStatement();
System.out.println(query);
result=statement.executeQuery(query);
// Boolean test=result.next();
while(result.next()){

int id =result.getInt("id");
String first_name =result.getString("first_name");
String last_name=result.getString("last_name");
String adress =result.getString("adress");
cass= new Casual(id,first_name,last_name,adress);
System.out.println(cass);

Controller :

import java.util.Scanner;
import java.sql.SQLException;
import java.util.ArrayList;

public class Control {

public static void main(String[] args) {

CasualDAO case= new CasualDAO();
Casual cass=null;

Scanner in= new Scanner(System.in);
System.out.println("Crud Operations");
System.out.println( "Enter operation");
System.out.println("Search = 1 "+"Insert = 2 "+"Delete = 3 "+"Update = 4 ");
String operation=in.next();

if(operation.equals("1")){
try{
cass=case.getCasual(1);
}catch(SQLException e){
e.printStackTrace();
}

}

马克的问题,引发了我的这个思考过程,谢谢。

关于java - JDBC SQLite : Retrieval Operation - loops without stopping? |,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53144662/

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