我正在使用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()。无论我尝试什么,运行代码并输入信息时数据库都不会更新。
我在做什么错?如果您需要其他任何信息,请告诉我。
预先感谢
答案 0 :(得分:0)
即使您的方法并不理想,也只需检查Insert语句中的以下语法来检查正在发生的情况。即。按身份顺序将列列表(身份列除外)
Insert Into Ticket (Col1,Col2,... ) values (...)
更好的方法是使用参数,并使用存储过程进行插入