String b="5";
String a="gz='"+b+"'"; //让用户自定义得来的要更新的字段
String sql="update tab set '+a+'; // 想把gz字段值更新成5
con1.executeUpdate(sql);   //执行后gz字段值更新不成功
如何加以改正?

解决方案 »

  1.   

    String sql="update tab set '+a+'; // 想把gz字段值更新成5 
    ---->
    String sql="update tab set "+a; // 想把gz字段值更新成5 
    其实你在
    con1.executeUpdate(sql);  //执行后gz字段值更新不成功 
    前面加一句
    System.out.println(sql);看看sql就知道是多了单引号额
      

  2.   

    把String sql="update tab set '+a+'; 改成 String sql="update tab set "+a;
    还是取不到呀
      

  3.   

    你update都没有条件的嘛,比如:update...set...where...
      

  4.   

    按他说的做啊~把System.out.println(sql);的结果贴出来看看呢~
    还有~如果不是字符串(数据库里不是char之类的)就不需要单引号的。
      

  5.   

    你只是update又不是select语句 不知道你期待他返回什么
      

  6.   


    String b="5"; 
    String sql="update tab set gz = "+b;  
    con1.executeUpdate(sql);  
      

  7.   


    这个应该是可以的啊
    String b="5"; 
    String a="gz='"+b+"'"; //让用户自定义得来的要更新的字段 
    String str="update tab set ";
    str=str+a;看看有没有报错啊.打印一下SQL测试一下
      

  8.   

    楼上的都回答得差不多了,我总结一下。
    一、gz字段的类型可能是数字,那么String a="gz='"+b+"'"; 应该改成String a="gz="+b; 否则造成类型不匹配。
    二、String sql="update tab set '+a+'; 应该改成String sql="update tab set "+a;
    三、你的sql相当危险,没有任何条件语句。如果成功,将更新所有数据的gz字段。
    四、最后,请确认table和字段的名字拼写正确。
      

  9.   

    sql 输出后是 update tab set gz='"+b+"'
    变量与字符串混淆了,变量都当字符输出了。
      

  10.   

    update tab set gz='"+b+"' 你说输出这个???我不太相信一个"不是那么容易输出的
      

  11.   

    没办法贴源码吧,说不清楚了,看看哪里的错。
    String cx="gz1=,gz2="; //由用户自定得来的字符串
    String[]   myArr   =   cx.split( ",");  //拆分
    for(int   i=0;i < myArr.length;i++) 

    String aa="";
    aa+=myArr[i]+"b"+String.valueOf(i)+","; 
    aa = aa.substring(0,aa.length() - 1); //去掉最后的逗号
    String b0="1";
    String b1="2";
    String sql="update tab set "+aa;  //生成sql
    con1.executeUpdate(sql);  //执行后gz1,gz2字段值更新不成功
      

  12.   

    没办法贴源码吧,说不清楚了,看看哪里的错。刚才贴错了 
    String cx="gz1=,gz2="; //由用户自定得来的字符串 
    String[]  myArr  =  cx.split( ",");  //拆分 
    String aa=""; 
    for(int  i=0;i < myArr.length;i++) 
    { aa+=myArr[i]+"b"+String.valueOf(i)+","; 

    aa = aa.substring(0,aa.length() - 1); //去掉最后的逗号 
    String b0="1"; 
    String b1="2"; 
    String sql="update tab set "+aa;  //生成sql 
    con1.executeUpdate(sql);  //执行后gz1,gz2字段值更新不成功
      

  13.   

    不知道你这样写....值呢?
    String cx="gz1=,gz2="; //由用户自定得来的字符串 
    String[]  myArr  =  cx.split( ",");  //拆分 
    String aa="";
    for(int  i=0;i < myArr.length;i++) 

    aa+=myArr[i]+" '" +"b"+String.valueOf(i)+"' "+","; 
    }
    aa = aa.substring(0,aa.length() - 1); //去掉最后的逗号
    String sql="update tab set "+aa;  //生成sql 
      

  14.   

    楼主你的for循环只是在拼字符串吧 为什么要把execute语句也放进去呢?
    还有你的代码写的太纠结了 试试下面的代码
    String sql = "update tab set gz1=?,gz2=?";
      PreparedStatement ps = con.prepareStatement(sql);
    ps.setString(1,"1");
    ps.setString(2,"2");
    ps.executeQuery();
      

  15.   

    如果不固定那就没有办法tring cx="gz1=,gz2="; 
      String[]  myArr  =  cx.split( ",");
      String aa="";
      for(int  i=0;i < myArr.length;i++)
      {   aa+=myArr[i]+"'b"+String.valueOf(i)+"',";
      }
      aa = aa.substring(0,aa.length() - 1);
      String b0="1";
      String b1="2";
      String sql="update tab set "+aa;
      

  16.   

    不明白楼主下面两句的用意:
    String b0="1";
    String b1="2"; 
    用楼主的代码 sql生成的是
    update tab set gz1=b0,gz2=b1如果楼主想把值更新成b0 b1那就要加引号但是楼主 String b0="1"; String b1="2"; 这两句代码着实诡异 不知道想干嘛
      

  17.   

    lovingpig 如我按你的这个方法实现,我是实现从Excel表中循环读值给 数组a, PreparedStatement ps = con.prepareStatement(sql); 是写在循环体外吧?能明白我的意思吗?你的QQ号是多少?String sql = "update tab set gz1=?,gz2=? where xh='"+xh+"'"; 
    PreparedStatement ps = con.prepareStatement(sql); 
    ps.setString(1,a[i]); 
    ps.executeQuery();
      

  18.   

    是的 循环里面只要对 ps中的?附值即可
    同时where中的xh也可以用?来代替我上班不能上QQ请见谅
      

  19.   


    String b = "5";
    String a = "gz= "+b;
    String sql = "update tab set " + a;
    con1.executeUpdate(sql);
      

  20.   

    String b="5"; 
    String a="gz='"+b+"'"; //让用户自定义得来的要更新的字段 
    String sql="update tab set "+a+""; // 想把gz字段值更新成5 
    con1.executeUpdate(sql);  //执行后gz字段值更新不成功 
    应该是这个样子滴!!!
      

  21.   

    这个东西你可以syso下试试嘿。