0

私は奇妙な状況に遭遇しました。コードは次のとおりです。

public static int add(String trcd, String tlcd, String dept, String doDate,
                    String doTime, String andConfirm, Teller admin) throws
  Exception {

try {
  String table1 = "table1";
  String table2 = "table2";
  String trap = null;
  String trtype = null;

  String sql = "select * from " + table2;

  DataSet dataset = DBOper.DBQuery("taUtil", sql);

  if (dataset.isEmpty()) {
    return -1;
  }
  else {
    HashMap map = dataset.getRow(0);
    trap = (String) map.get("aut_ap_code");
    trtype = (String) map.get("aut_type_code");
    //point 1
    sql = "insert into " + table1 + " values("+trtype + "','" + doDate + "','" + doTime + "','N','Y')";

    DBOper.DBUpdate("taUtil", sql);

    if (andConfirm.equals("Y")) {
    //point 2
    sql = "select * " + table1 +" where tr_create_date='" + doDate + "' and tr_create_time='" + doTime + "' and tr_stcd='Y'";
      //point 3
      DataSet dataset2 = DBOper.DBQuery("taUtil", sql);

      if (dataset2.isEmpty()) {
        return -2;
      }
      else {
        String trNo = null;
        HashMap map2 = dataset2.getRow(0);
        trNo = (String) map2.get("tr_no");
        confirm(admin, trNo, "N");
      }
    }
    return 0;
  }
}
catch (Exception e) {
  throw e;
}

}

問題は:

ポイント3では、常に「挿入」、つまり「選択」の最新の割り当てではなく、前のSQL値を出力します。

なぜそうなのか誰か知っていますか?ありがとう

4

1 に答える 1

1

割り当てステートメントに構文エラーがあります。

sql = "insert into " + table1 + " values(trtype + "','" + doDate + "','" + doTime + "','N','Y')";

次のように置き換えてみてください。

sql = "insert into " + table1 + " values(" +trtype + "',' " + doDate + "','" + doTime + "','N','Y')";

どうやってこれをコンパイルしたのかわかりません...

編集:この構文エラーがコードのコンパイルを停止し、IDE(使用していると仮定)がコンパイルできなかった古いバージョンのクラスを実行する場合(時々Eclipseを使用して私に起こった)、それは終わる可能性があると思います完全に予測不可能なことをし、おそらくこの奇妙な振る舞いを説明します。

于 2012-06-13T01:54:36.367 に答える