1

我正在阅读一个 .xls 文件(excel)并将其插入到我的数据库中。我使用 jsp 来执行此操作,如果没有重复键,它工作正常。

    patientId = list1.get(i).toString();
    patientFname = list2.get(i).toString();
    patientLname = list3.get(i).toString();
    patientMname = list4.get(i).toString();
    patientGender = list5.get(i).toString();
    patientBirthday = list6.get(i).toString();
    patientAge = list7.get(i).toString();
    patientAddress = list8.get(i).toString();
    patientCompany = list9.get(i).toString();

ResultSet rs=st.executeQuery("SELECT idpatients FROM patients");

    if (rs.first()) {

    }
    st.executeUpdate("insert into patients(idpatients,pfirstname,plastname,pmiddlename,gender,birthdate,age,address,company) values('"+patientId+"','"+patientFname+"','"+patientLname+"','"+patientMname+"','"+patientGender+"','"+patientBirthday+"','"+patientAge+"','"+patientAddress+"','"+patientCompany+"')");

如果有重复的主键,它就不起作用,我想忽略它并继续下一个数据。

4

4 回答 4

1

如果您真的想在重复键的情况下什么都不做,那么就INSERT IGNORE在您的小巷中:

st.executeUpdate("insert ignore into patients(idpatients,pfirstname,plastname,pmiddlename,gender,birthdate,age,address,company) values('"+patientId+"','"+patientFname+"','"+patientLname+"','"+patientMname+"','"+patientGender+"','"+patientBirthday+"','"+patientAge+"','"+patientAddress+"','"+patientCompany+"')");
于 2013-11-11T15:55:26.743 回答
1

如果您只想忽略主键违规,那么您可以使用

INSERT IGNORE INTO patients (columns here) VALUES (values here)
于 2013-11-11T15:55:41.807 回答
1

使用INSERT IGNORE ...INSERT ... ON DUPLICATE KEY UPDATE。请参阅此答案以获得有关差异的良好参考。

于 2013-11-11T15:55:58.387 回答
0

使用 INSERT ... ON DUPLICATE KEY UPDATE

insert into patients(idpatients,pfirstname,plastname,pmiddlename,gender,birthdate,age,address,company) values('"+patientId+"','"+patientFname+"','"+patientLname+"','"+patientMname+"','"+patientGender+"','"+patientBirthday+"','"+patientAge+"','"+patientAddress+"','"+patientCompany+"' ON DUPLICATE KEY UPDATE idpatients=idpatients;"

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

于 2013-11-11T15:52:49.743 回答