在java 中我想连接一个SQL 语句
String strSQL = " insert into T_TASKSTEPDATA (STEPID,EXHIBITID,TASKID,FIELDDATA) values ("+ StepID+","+ExhibitID+",'"+TaskID+"','"+FieldData+"')";
看起来很不好看,而且可读行不是很好,查找错误也不是很方便.以下是.NET String.Format 的写法
String strSQL = String.Format" 
insert into T_TASKSTEPDATA (STEPID,EXHIBITID,TASKID,FIELDDATA) values ({0},{1},'{2}','{4}')",StepID,ExhibitID,TaskID,FieldData);
不知道java 中有没得类似的,这样看起来方便,可读性好.

解决方案 »

  1.   

    String strSQL = " insert into T_TASKSTEPDATA (STEPID,EXHIBITID,TASKID,FIELDDATA) values (?,?,?,?)";PreparedStatement pst = conn.preparedStatement(strSQL);
    pst.setLong(1, StepID);
    pst.setLong(2, ExhibitID);
    pst.setLong(3, TaskID);
    pst.setDate(4, FieldDate);pst.executeUpdate();
      

  2.   

    我问的是单纯的字符串的连接,你涉及到其他 PreparedStatement 类的对象.
    如果我的字符串不是生成一个SQL 语句呢?如果我是用生成一个html 形式的字符串呢?
    (别告诉我用StringBuffer,否则没得分)
      

  3.   

    String strSQL = String.Format" 
    insert into T_TASKSTEPDATA (STEPID,EXHIBITID,TASKID,FIELDDATA) values ({0},{1},'{2}','{4}')",StepID,ExhibitID,TaskID,FieldData);jdk5.0里面加了可变参数的形式,可以自己写一个类似的函数
      

  4.   

    String format(String sql,String... args){
    String s = sql;
    for(int i=0;i<args.length;i++){
    s = s.replaceAll("\\{"+i+"\\}",args[i]);
    }
    return s;
    }
      

  5.   

    恩,重载format方法,主意不错.揭贴