我要更新么个表中的么个列的值,但是这个表中列的名字是通过参数传来的public boolean setPhoto(String tablename,String idname,String idvalue,String photoname,InputStream photovalue)throws Exception{
boolean flag = false;
Connection conn = MyCon.getCon();
PreparedStatement pstm = conn.prepareStatement("UPDATE ? SET ? = ? WHERE idname = ?");
pstm.setString(1, tablename);
pstm.setString(2,photoname);
pstm.setBinaryStream(3,photovalue,photovalue.available());
pstm.setString(4, idname);
pstm.setString(5, idvalue);
int count = pstm.executeUpdate();
if(count>0){
flag=true;
System.out.println("成功更新图片!");
}
return flag;
}
这样子为什么不可以呢
请教各位大虾,在线等,急!小弟先在这里谢谢了!

解决方案 »

  1.   

    不过为什么不把列名先拼到SQL里面进去再prepare?
    另外,里面只有4个?,为什么覆了5次值?
    不太懂,随便说说,呵呵
      

  2.   

    不就是要动态改那句SQL的UPDATE的表和相关的值吗? 有必要搞的这么复杂吗?
    直接打开数据库连接.再用变量传给你的SQL不就可以了吗?例: DIM STRSQL AS STRING 
        STRSQL = " UPDATE " & TABLENAME & " SET " & 字段1 &" = '"& 值1 &"' WHERE idname = '" & 条件&"'"执行就可以了.
      

  3.   

    我是要写在项目当中的方法里啊,从页面传来数据做为参数在servlet里面调用这个方法上楼的有没有什么可以实现的方法?具体说说,行吗?
      

  4.   


    能具体说说你的方法吗?哦,对了,我那里写错了,是有5个问号的,发贴了就不能修改了,没办法UPDATE ? SET ? = ? WHERE ? = ?
      

  5.   

    pstm.setBinaryStream(3,photovalue,photovalue.available());
    数据库里什么类型的字段?
      

  6.   

    不行。。不能这样写
    举个例子:
    你语句一旦进行执行就变成了
    update "a" set "b"="c" where "d"="e"就变成这样的了。。
      

  7.   


    能说说你的具体方法吗?我是要将它放到JAVA的一个方法中,因为数据库中要存放的是一张图片