Java奇怪的变量赋值查询

时间:2012-06-13 01:49:45

标签: java variables

我遇到了一个奇怪的情况。代码如下:

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值而不是最新的“select”赋值。

有人知道为什么会这样吗? 感谢

1 个答案:

答案 0 :(得分:1)

您的赋值语句中存在语法错误:

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

尝试将其替换为:

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

我不确定你是怎么设法编译的......

编辑:如果此语法错误确实停止编译代码,并且您的IDE(假设您正在使用它)执行无法编译的类的旧版本(发生在我身边使用Eclipse在某些情况下),我认为最终可能会做一些完全不可预测的事情,并可能解释这种奇怪的行为。