【发布时间】:2014-08-04 17:47:33
【问题描述】:
我正在 Netbeans 中开发一个桌面应用程序。我正在尝试将记录插入数据库。我遇到的一个非常奇怪的问题是,当我按下保存按钮时,没有出现错误,一切正常。但是当我检查我的数据库时,那里没有数据。但是当我尝试通过查询直接在 phpmyadmin 中插入数据时,它会在我尝试通过桌面应用程序保存数据之前生成的 ID (自动增量)之后插入记录。我知道这很难解释。让我再给大家解释一下
例如,我的数据库很清晰,我正在尝试保存我的第一条记录
通过桌面应用我按下了保存按钮
当我检查数据库时,那里没有记录
这里如果数据保存成功那么记录ID必须是1
但是现在我通过进入 phpmyadmin 并在 sql 选项卡中手动输入查询来插入记录
现在记录的
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;
}
【问题讨论】:
-
[1] 检查您的代码如何提交到数据库并 [2] 发布堆栈跟踪(如果有)
-
@Leo 你是想让我展示我如何连接到数据库的代码吗?
-
user1,这个地方是为了理解问题而不是调试你的代码。你也必须谷歌并找到答案,Leo 告诉你关于提交 DB 的关键词是 autocommit,所以你必须谷歌“jdbc autocommit”并自己学习,我们可以为你提供指导而不是答案
标签: java mysql jdbc phpmyadmin