JDBC SQLite: операция извлечения - циклы без остановки? - PullRequest
0 голосов
/ 04 ноября 2018

Моя программа дает пользователю возможность выполнять любые операции CRUD. в базе данных Sqlite.

Однако мой метод «Поиск одного транспортного средства» выводит запрос несколько раз, пока я не получу исключение, которое указывает на оператор return.

Подключение

enter image description here

Заявление о возврате

enter image description here

--------------------- Вот что я сделал / посмотрел / попытался сделать ниже:

  1. Цикл while: Я попытался: «установить условие false, затем true».
    msgstr "установить условие с целым числом для выполнения цикла ограниченное количество раз". Oни оба выдают одно и то же исключение.
  2. Оператор возврата: нет другого выражения / переменной, в которое я могу вставить ответное заявление. Я понятия не имею, потому что метод основан на класс, поэтому он должен возвращать этот класс объектов.

Что я делаю не так, чтобы он непрерывно зацикливался?

Метод с исключением Класс DAO:

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

    }



    }

Контроллер:

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

        }

1 Ответ

0 голосов
/ 05 ноября 2018

Создайте объект из класса в методе и сохраните ваши параметры там. Сделайте то же самое в контроллере, за исключением добавления параметров

Я создал объект в методе типа casual с именем ("Casual cass = null"). Его первый набор равен нулю, потому что он не используется сразу. Затем в цикле while он переопределяется с помощью «new Casual (id, firstname, фамилия, адрес)» , на этот раз содержащий параметры.

В контроллере я создал еще один «случайный» объект, на этот раз содержащий casualDao.getCasual (1). 1 обозначает конкретный идентификатор в запросе.

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

Контроллер:

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

        }

Вопрос Марка, вызвавший этот мыслительный процесс в моей голове, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...