gpt4 book ai didi

java - 将数据插入 MySQL 数据库时出现问题

转载 作者:行者123 更新时间:2023-11-30 00:09:19 25 4
gpt4 key购买 nike

我正在 Netbeans 中开发桌面应用程序。我正在尝试将记录插入数据库。我遇到的一个非常奇怪的问题是,当我按下保存按钮时,没有发生错误,一切都很完美。但是当我检查我的数据库时,那里没有数据。但是,当我尝试通过查询直接在 phpmyadmin 中插入数据时,它会在我尝试通过以下方式保存数据时生成的 ID (自动增量)之后插入记录:桌面应用程序。我知道这很难解释。让我给大家多一点解释

例如,我的数据库已清除,我正在尝试保存我的第一条记录

  1. 通过桌面应用程序,我按下了保存按钮

  2. 当我检查数据库时,那里没有记录

上面如果数据保存成功则记录ID必须为1

  1. 但现在我通过进入 phpmyadmin 并在 sql 选项卡中手动输入查询来插入记录

  2. 现在记录的 id 应该是 1,但 id 是 2。

所以这意味着通过桌面应用程序数据正在保存,但隐藏在我看不到的地方,而且它还记住了 ID。我希望你能理解我的问题。

如果我按保存按钮 3 次,然后我在 phpmyadmin 中插入一些数据,则该记录的 id 是 4。

不知道问题出在哪里?

这是我的代码:

    public class DBConnectionManager {

private static String DRIVER_NAME = "com.mysql.jdbc.Driver";
private static String HOST_NAME = "localhost";
private static String PORT_NUMBER = "3306";
private static String DB_NAME = "sales";
private static String USER_NAME = "root";
private static String PASSWORD = "";

public static Connection openConnection() throws Exception {

Class.forName(DRIVER_NAME);

String jdbcURL = "jdbc:mysql://"+HOST_NAME+":"+PORT_NUMBER+"/"+DB_NAME;

Connection connection = DriverManager.getConnection(jdbcURL,USER_NAME,PASSWORD);
connection.setAutoCommit(false);
return connection;
}
}

public void addSupplierDetail() {

String contact_name = txt_contactName.getText();
String shop_name = txt_shopName.getText();
String city = txt_city.getText();
int phone = Integer.parseInt(txt_phone.getText());
int mobileNo = Integer.parseInt(txt_mobile.getText());
String address = txt_address.getText();

Supplier supplier = new Supplier();
supplier.setContactName(contact_name);
supplier.setShopName(shop_name);
supplier.setCity(city);
supplier.setPhone(phone);
supplier.setMobileNo(mobileNo);
supplier.setAddress(address);


connection = DBConnectionManager.openConnection();
SupplierDAO dao = new SupplierDAO(connection);
try {

if (dao.addSupplier(supplier)) {

connection.close();
JOptionPane.showMessageDialog(null, "data save");
// Dashboard dashboard = new Dashboard();
//dashboard.setVisible(true);

} else {
JOptionPane.showMessageDialog(null, "not saved");

}


} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);

}


}

public boolean addSupplier(Supplier supplier) throws Exception {

String sql = "INSERT INTO suppliers"
+ "(sup_name,sup_address,city,mobile_no,phone,shop_name)"
+ "VALUES (?,?,?,?,?,?)";

PreparedStatement ps = connection.prepareStatement(sql);

ps.setString(1, supplier.getContactName());
ps.setString(2, supplier.getAddress());
ps.setString(3, supplier.getCity());
ps.setInt(4, supplier.getMobileNo());
ps.setInt(5, supplier.getPhone());
ps.setString(6, supplier.getShopName());
System.out.println(ps);
int rowscount = ps.executeUpdate();
System.out.println("no of rows updated: " + rowscount);
ps.close();
return rowscount > 0;

}

最佳答案

尝试调试器,如果一切都按预期执行,请检查语句的 autoCommit 属性(或者我忘记它绑定(bind)到哪个连接)

关于java - 将数据插入 MySQL 数据库时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24217656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com