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 点,它总是打印“insert”,即前一个 sql 值,而不是“select”的最新赋值。

有谁知道为什么会这样?谢谢

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 回答