【发布时间】:2020-05-03 01:43:53
【问题描述】:
我正在使用 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 函数,并且我们在 main 中看到我们调用了连接,然后调用了 createTicket。 Ticket 表是手动创建的,实际上有 6 个字段。此处的代码列出了 5,但第一个字段是 TicketNumber,它是一个非空的自动增量。
我已经尝试过这里看到的 add.executeUpdate(),我还尝试过 add.execute() 和 conn.commit()。无论我尝试什么,当我运行代码并输入信息时,数据库都不会更新。
我做错了什么?如果您需要任何其他信息,请告诉我。
提前致谢
【问题讨论】:
-
我们需要你添加一个 System.out.println();在您的 SQLException catch 块内,您可以看到有关问题所在的消息。现在,您只是跳过任何 SQLException,甚至不知道是否发生了错误。如果您打印 e.getMessage(),SQLException 将通知您出了什么问题。这样你就知道出了什么问题。
-
我添加了这个代码: System.err.println( e.getClass().getName() + ": " + e.getMessage() ); System.exit(0);除了我列出的错误之外,它没有吐出错误。