【发布时间】:2021-05-07 16:42:14
【问题描述】:
使用准备好的语句将数据插入 MySQL 数据库后,我检索了数据库为我创建的 ID。然后我想将该检索到的 ID 存储为数组的第一个对象的元素。
这些是我的类的属性:
private String DiskID;
private String Letter;
private String Label;
private String Type;
private String Health;
private String Op;
private String Size;
private String Remaining;
private List<Disk> diskTable = new ArrayList<>();
这是插入磁盘信息的方法:
public void insertDiskInfo(Connection conn){
String query = "INSERT INTO Disk(DiskLetter, DiskName, FileSystemType, HealthStatus, OperationalStatus, DiskSize, DiskSpace)" +
"VALUES(?,?,?,?,?,?,?);" ;
String ReturnDiskID = "SELECT_LAST_INSERT_ID();" ;
try{
PreparedStatement ps = conn.prepareStatement(query);
PreparedStatement ID = conn.prepareStatement(ReturnDiskID);
for(int i=0; i<diskTable.size(); i++) {
ps.setString(1, diskTable.get(i).Letter);
ps.setString(2, diskTable.get(i).Label);
ps.setString(3, diskTable.get(i).Type);
ps.setString(4, diskTable.get(i).Health);
ps.setString(5, diskTable.get(i).Op);
ps.setString(6, diskTable.get(i).Size);
ps.setString(7, diskTable.get(i).Remaining);
ps.addBatch();
ResultSet rs = ID.executeQuery();
if(rs.next()){
diskTable.add(1, DiskID);
}
else {
System.out.println("Failed to retrieve DiskID");
}
}
}catch(Exception e){
e.printStackTrace();
e.getCause();
}
如何将检索到的磁盘 ID 添加到第一个磁盘的第一个元素中?
【问题讨论】:
-
diskTable在您的示例中不是数组。 -
@talex 我以为我已将其声明为数组列表?
-
是的。
ArrayList不是数组。这是数组的示例:int[] arr; -
您希望您的
diskTable列表同时包含 ID 和磁盘对象?为什么不单独存储 ID? -
Array List 中每个 Disk 对象的 ID。当我更新数据库表中的信息时,我需要 diskID 来知道要更新哪个磁盘。我无法在创建 Disk 对象的同时分配它的原因是因为在整个企业的多台不同 PC 上存在多个此应用程序。因此计数器需要从数据库中计数,而不是应用程序。