Java подключается к базе данных SQL, но не обновляет таблицы - PullRequest
0 голосов
/ 03 мая 2020

Я кодирую систему заявок, используя java и SQLite. Вот код, который у меня есть для подключения к БД и создания заявки в этой БД.

public class TicketProject {

    static Connection conn = null;
    static Scanner entry = new Scanner(System.in);
    static PreparedStatement add = null;

    public static Connection ConnectDB(){
        try {
            Class.forName("org.sqlite.JDBC");
            conn = DriverManager.getConnection("jdbc:sqlite:TicketDB.db");
            JOptionPane.showMessageDialog(null,"Connection Success!");
            return conn;
        } catch (ClassNotFoundException | SQLException | HeadlessException e) {
            JOptionPane.showMessageDialog(null, "Connection failed ! " + e);
            return null;
        }
    }

    public static void createTicket() {

        String cont = "1";
        int contChoice = Integer.parseInt(cont);
        Statement stmt = null;

        while (contChoice != 0) {

            try {
                //program accepts user input
                System.out.print("Enter Name: ");
                String n = entry.nextLine();
                System.out.print("Enter Department: ");
                String d = entry.nextLine();
                System.out.print("Enter Status: ");
                String s = entry.nextLine();
                System.out.print("Enter Notes: ");
                String o = entry.nextLine();

                add = conn.prepareStatement("INSERT INTO Ticket VALUES(?,?,?,?,?)");
                add.setString(2, n);
                add.setDate(3, java.sql.Date.valueOf(java.time.LocalDate.now()));
                add.setString(4, d);
                add.setString(5, s);
                add.setString(6, o);
                int executeUpdate = add.executeUpdate();               
            } catch (SQLException e ) {

            }

            System.out.println("Would you like to create another ticket? 1 = yes, 0 = no");
            cont = entry.nextLine();
            contChoice = Integer.parseInt(cont);
        }
    }

    public static void main(String[] args) {

        ConnectDB();

        String initialOption;
        int run = 1;

        while (run != 2) {

            System.out.println("What would you like to do?");
            System.out.println("1 = Create Ticket, 2 = Edit Ticket, 3 = Display Tickets, 4 = Exit");
            initialOption = entry.nextLine();
            int choice = Integer.parseInt(initialOption);

            if (choice == 1) {

                createTicket();

            }
        }
    }
}

Итак, в этом коде мы видим мое соединение с БД, мы видим мою функцию createTicket и видим в Главное, что мы вызываем соединение, а затем вызываем createTicket. Таблица заявок была создана вручную и на самом деле имеет 6 полей. Этот код здесь перечисляет 5, но первое поле - это TicketNumber, который является ненулевым автоинкрементом.

Я пробовал то, что видно здесь, add.executeUpdate (), я также пробовал add.execute ( ) и conn.commit (). Что бы я ни пытался, база данных не обновляется, когда я запускаю код и ввожу информацию.

Что я делаю не так? Если вам нужна какая-либо другая информация, пожалуйста, дайте мне знать.

Заранее спасибо

1 Ответ

0 голосов
/ 03 мая 2020

Даже если ваш способ не идеален, просто для проверки того, что происходит, используйте следующий синтаксис в операторе Insert. ie. поместите список столбцов, отличный от идентификатора col, в правильном порядке

Insert Into Ticket (Col1,Col2,... ) values (...)

Лучше использовать параметры и использовать хранимую процедуру для вставки

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