Java正在连接到SQL数据库,但未更新表

时间:2020-05-03 01:43:53

标签: java sql sqlite

我正在使用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 :(得分:0)

即使您的方法并不理想,也只需检查Insert语句中的以下语法来检查正在发生的情况。即。按身份顺序将列列表(身份列除外)

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

更好的方法是使用参数,并使用存储过程进行插入