これは私のコードです 私はStringをattrに変換しています(attrは列名です)。フィールドが存在しない場合、それは、SQL例外動的にSetter in java
public ArrayList<MedicineParam> viewParticularDataOnClick(String medName,
String attr) {
ArrayList<MedicineParam> newList = new ArrayList<MedicineParam>();
try{
Class.forName(DRIVER);
String selectTableSQL = "SELECT "+attr+", companyname FROM
medicineinfo WHERE companyname != 'doecompany' AND medicinename = '"+medName+"'";
System.out.println(selectTableSQL);
Statement statement = this.checkconnection().createStatement();
ResultSet rs = statement.executeQuery(selectTableSQL);
final String s = "medici.set"+attr;
while (rs.next()) {
MedicineParam medici =new MedicineParam();
if(rs.getString("companyname") != null)
medici.setCompanyname(rs.getString("companyname"));
if(rs.getString(attr) != null)
medici.set...??.....(rs.getString(attr)); // THIS LINE how to set the setter w r t the name of attr
newList.add(medici);
}
rs.close();
statement.close();
this.checkconnection().close();
}
catch(Exception e){
}
return newList;
}
をスローしますので、投与量はまた、私は
if(rs.getString("dosage") != null)
medici.setDosage(rs.getString("dosage"));
を使用傾けるようにも......自分自身を設定する必要があります
public class MedicineParam {
private long id;
private String companyname;
private String medicineName;
private String description;
private String dosage;
private String sideEffects;
private String warnings;
private String overdose;
private String interaction;
private String url;
//setter
//getter...
}
助けが必要ですか?
。それとも良い設計のようには聞こえないので、コードを再設計してください。 – Michael
'medicineinfo'テーブルは実際にどのように見えますか?ユーザーの入力から列名を動的に取得することはまれですので、問題をもう少し詳しく説明すると、おそらくこれを行うためのより良い方法があります。 'attr'値はどこから来ますか? –
@MickMnemonicテーブルの列名は、MedicineParamのオブジェクトとまったく同じです。if(rs.getString( "companyname")!= null) medici.setCompanyname(rs.getString( "companyname")); if(rs.getString(attr)!= null) medici.set ... ??(rs.getString(attr)); 'この行のcompanynameはテーブルの列で、setCompanynameは値を設定します。これは行は大丈夫ですが、私は動的にattr変数の列のパラメータ名を送信しています.iは、それに応じてMedicineParamセッターとattrコードの上から来るこのメソッドの変数を設定する必要があります – doe