我现在Map t = new HashMap();
String[] a = new String[31]();
String[] b = new String[31]();
for(int j=0 , int k =0 ; j<31 ; j++ , k++){
t.put( "a[j]", b[k]);
}
大概意思是这样,a和b在表里有分别对应的字段,假设a在表里的数据是从1到31,现在这个t的key值也是从1到31,b也是不同的。我现在想做的SQL文内容大概是
update 表A
set A = a[i]
WHERE
B = b[i]
我就是想把map里的key值当作判定条件,然后分别把value值更新到表里的对应数据上。但是在SQL里写的时候,后面a和b应该是个数组,这样的话,怎么写到SQL文里呢?在线等大神帮忙!!
你a[i],b[i]都对应了,为啥还要先放在MAP然后再从MAP里取出来呢。
Map<String,String> t = new HashMap<String,String>();用MAP就这样的意思?
不好意思可能提问的有点问题,是这样,现在我通过别的方法取到了一个map,t.map(key[i],value);这里的key是个数组,我能得到,value的值是不知道的。
SQL大概是
update 表A
set
VALUE = /*value*/
where
KEY = /*key*/,
我现在想通过循环把每一条的key 和value取出来放到SQL文里。就是这样。。。上午我也没明白,所以提问的有些模糊。
哦,还是不太明白你的需求,你看是不是这样嘛:
Map t = new HashMap();
//map的key会形成这样的一个数组 :
String[] key = {1,2,3,4,5,6,……31};
//map的value可以通过key来访问,形成这样的一个数组:
//Object[] value = {key{0},key[1],……,key{30}};
//如果是这样的话,就可以这样处理了:
for(int i=0 , i<key.length ;i++){
sql = "update 表A set VALUE=" + map.get(key[i]) +" WHERE KEY=" + key[i];
}
另外,java中map的key只能是一个字符串,不会是别的,所以map的key不会是数组形式,只是map中有很多个key按照顺序排列,看起来像数组而已。
现在要求是只调用这一个SQL,而且里面的判定条件或者set条件是数组里的值,现在假如说有一个数组a[4],里面有 1 2 3 4 5 这5个对象,怎么写个SQL文能把这5个对象分别赋到5个数据里?
UPDATE 表A
SET A = ??
WHERE
1=1
像这样,??地方应该怎么写
你的意思 就是写一句sql 同时更改 这 5条记录???
UPDATE TABLE SET A = A[1],A[2],A[3] WHERE B= B[1],B[2],B[3];???? 这样的 这个意思吗??
这个明显不可能实现的,你从数据库的角度上去想一想?
你能用一个条件查出需要更新的记录,但是如何让对应的记录知道他要被改成多少呢?
只有唯一确定一条记录时,才能明确知道改那条,该那个字段,改成什么内容。
从数据库方面想,更新只能是更改一条或一批,但改的结果(修改的内容)肯定是相同的,不可能那么智能的知道那个条件的改成对应的,你这样的需求只能一条一条改。