为什么当我使用 jdbc 插入我的数据库时,我的表 auto_increments 会被抬高。
填充完全空表的示例:
狗桌
DogId DogName
3 Woofer
4 Kujo
5 Spike
所有者表
OwnerId DogID OwnerName
6 3 George
7 4 John
8 5 Sam
期望的结果
狗桌
DogId DogName
1 Woofer
2 Kujo
3 Spike
所有者表
OwnerId DogID OwnerName
1 1 George
2 2 John
3 3 Sam
实际代码:
public void insertStuff(Something d)
{
Connection con = null;
try
{
Class.forName("com.mysql.jdbc.Driver");
con = (Connection) DriverManager.getConnection(
"jdbc:mysql://" + this.getServer() + "/" + this.getDatabase(), user,
password);
con.setAutoCommit(false);
Statement s1 = (Statement) con.createStatement();
s1.executeUpdate("INSERT IGNORE INTO DOG (DOG_NAME) VALUES(\""
+ d.getDogName() + "\")");
Statement s2 = (Statement) con.createStatement();
s2.executeUpdate("INSERT IGNORE INTO OWNER (DOG_ID,OWNER_TITLE) VALUES ("
+ "(SELECT DOG_ID FROM DEVICE WHERE DOG_NAME =\""
+ d.getDogName()
+ "\"),\"" + d.getOWNER() + "\")");
Statement s3 = (Statement) con.createStatement();
s3.executeUpdate("INSERT IGNORE INTO KENNEL " + "("
+ "KENNEL_NAME,+ "OWNER_ID) " + "VALUES " + "( \""
+ d.getKennelName()
+ "\","
+ "\""
+ ","
+ "(SELECT OWNER_ID FROM OWNER WHERE OWNER_TITLE=\""
+ d.getOWNER() + "\")" + ")");
}
con.commit();
}
catch (Exception e)
{
if (con != null)
try
{
con.rollback();
}
catch (SQLException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}
finally
{
if (con != null)
try
{
con.close();
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}