为什么取不到值?

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

...全文
208 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
hnnxzhoujia 2010-02-05
  • 打赏
  • 举报
回复
特殊字符,使用转义符。
鹰视狼顾 2010-02-03
  • 打赏
  • 举报
回复
这个东西你可以syso下试试嘿。。。。
鹰视狼顾 2010-02-03
  • 打赏
  • 举报
回复
String b="5";
String a="gz='"+b+"'"; //让用户自定义得来的要更新的字段
String sql="update tab set "+a+""; // 想把gz字段值更新成5
con1.executeUpdate(sql); //执行后gz字段值更新不成功


应该是这个样子滴!!!
doniks 2010-02-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 jlsyyz01 的回复:]
String b="5";
String a="gz='"+b+"'"; //让用户自定义得来的要更新的字段
String sql="update tab set '+a+'; // 想把gz字段值更新成5
con1.executeUpdate(sql);  //执行后gz字段值更新不成功
如何加以改正?


[/Quote]

String b = "5";
String a = "gz= "+b;
String sql = "update tab set " + a;
con1.executeUpdate(sql);
魔法骚年小成 2010-02-02
  • 打赏
  • 举报
回复
学习学习
jlsyyz01 2010-02-02
  • 打赏
  • 举报
回复
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();
lovingpig 2010-02-02
  • 打赏
  • 举报
回复
不明白楼主下面两句的用意:
String b0="1";
String b1="2";
用楼主的代码 sql生成的是
update tab set gz1=b0,gz2=b1

如果楼主想把值更新成b0 b1那就要加引号

但是楼主 String b0="1"; String b1="2"; 这两句代码着实诡异 不知道想干嘛
lovingpig 2010-02-02
  • 打赏
  • 举报
回复
如果不固定那就没有办法

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;
jlsyyz01 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 lovingpig 的回复:]
楼主你的for循环只是在拼字符串吧 为什么要把execute语句也放进去呢?
还有你的代码写的太纠结了 试试下面的代码
String sql = "update tab set gz1=?,gz2=?";
  PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1,"1");
ps.setString(2,"2");
ps.executeQuery();

[/Quote]
其实我的赋值变量也是拼起来的,因为要更新的字段也是不固定的。有好的方法吗
awusoft 2010-02-02
  • 打赏
  • 举报
回复
提供QQ远程吧
jlsyyz01 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 lovingpig 的回复:]
楼主你的for循环只是在拼字符串吧 为什么要把execute语句也放进去呢?
还有你的代码写的太纠结了 试试下面的代码
String sql = "update tab set gz1=?,gz2=?";
  PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1,"1");
ps.setString(2,"2");
ps.executeQuery();

[/Quote]

对是在拼字符串呀,如果按照我的思路应如何改呢?
lovingpig 2010-02-02
  • 打赏
  • 举报
回复
楼主你的for循环只是在拼字符串吧 为什么要把execute语句也放进去呢?
还有你的代码写的太纠结了 试试下面的代码
String sql = "update tab set gz1=?,gz2=?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1,"1");
ps.setString(2,"2");
ps.executeQuery();
awusoft 2010-02-02
  • 打赏
  • 举报
回复
不知道你这样写....值呢?


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
jlsyyz01 2010-02-02
  • 打赏
  • 举报
回复
没办法贴源码吧,说不清楚了,看看哪里的错。刚才贴错了
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字段值更新不成功
jlsyyz01 2010-02-02
  • 打赏
  • 举报
回复
没办法贴源码吧,说不清楚了,看看哪里的错。
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字段值更新不成功
awusoft 2010-02-02
  • 打赏
  • 举报
回复
update tab set gz='"+b+"'

你说输出这个???我不太相信一个"不是那么容易输出的
awusoft 2010-02-02
  • 打赏
  • 举报
回复
要的就是这个啊
jlsyyz01 2010-02-02
  • 打赏
  • 举报
回复
sql 输出后是 update tab set gz='"+b+"'
变量与字符串混淆了,变量都当字符输出了。
yuzhangqu 2010-02-02
  • 打赏
  • 举报
回复
楼上的都回答得差不多了,我总结一下。
一、gz字段的类型可能是数字,那么String a="gz='"+b+"'"; 应该改成String a="gz="+b; 否则造成类型不匹配。
二、String sql="update tab set '+a+'; 应该改成String sql="update tab set "+a;
三、你的sql相当危险,没有任何条件语句。如果成功,将更新所有数据的gz字段。
四、最后,请确认table和字段的名字拼写正确。
awusoft 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 crazylaa 的回复:]
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就知道是多了单引号额
[/Quote]

这个应该是可以的啊
String b="5";
String a="gz='"+b+"'"; //让用户自定义得来的要更新的字段
String str="update tab set ";
str=str+a;

看看有没有报错啊.打印一下SQL测试一下
加载更多回复(8)

81,087

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧