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 に答える