我说一下:我的数据库有2个表,
当用户36020001登陆的时候,执行搜索的表为: yizhi
当拥护36020002登陆的时候,执行搜索的表为:Erzhi,
所以在登陆的时候,我已经把拥护的登陆ID记录在SESSION中了,
这个页面是去SESSION中的登陆ID去出来用的,做判断的,
当用户36020001登陆的时候,执行搜索的表为: yizhi
当拥护36020002登陆的时候,执行搜索的表为:Erzhi,
所以在登陆的时候,我已经把拥护的登陆ID记录在SESSION中了,
这个页面是去SESSION中的登陆ID去出来用的,做判断的,
当用户36020001登陆的时候,执行搜索的表为: yizhi
当拥护36020002登陆的时候,执行搜索的表为:Erzhi,
所以在登陆的时候,我已经把拥护的登陆ID记录在SESSION中了,
这个页面是去SESSION中的登陆ID去出来用的,做判断的,
改为:
if(tempuser.equals("36020002"))
(当然不是了^^)
你的原意是要比较tempuser的值是不是36020002所以应写为tempuser.equals("36020002")
结果就会返回真的
改为:
if(tempuser.equals("36020002"))
因为tempuser=="36020002"是比较两面三刀个对象是否是同一个对象,也就是比较它们的地址是否是同一个,而tempuser.equals("36020002")才是比较它们的值。
判断字符串用equals
写出来的跟垃圾没什么区别
在 这里 只是引用 referance
即==只能说明 2边的对象的referance是不是同一个,这点不同于别的语言(oop的毛病)
如果要判断是不是有相同的值,那么就需要看referance所指向的对象存贮的值 是不是相等
那么就必须要用.equals来进行判断
明白了这个道理想必 对你程序的分析有些帮助吧。
还有 为什么不用3元表达式
datasource=(tempuser.equals("36020002"))?"Erzhi":"yizhi";
还有一点比较重要 那就是从session中得到的是对象不是值,如果是整形变量
那么可以写成 ((Integer)session.getAtrribute("...")).Values();
我用了:if(tempuser.equals("36020002"))
还是错误的,
其他的还没试,
我用了这个代码可以实现,其实我是有很多选择的,不是两个,
还有什么好的办法吗?
我也试过,switch,,case,
datasource=(tempuser.equals("36020002"))?"Erzhi":"yizhi";
楼上的方法我都试过了,
datasource=(tempuser.equals("36020002"))?"Erzhi":"yizhi";是可以的,
但是我现在遇到的不是两个选择,所以这种方法不行,各位看看是不是我的SQL代码有问题啊?SQL=SQL+" SUM(CASE WHEN TRXCODE = '"+temp4+"' THEN AMOUNT1 ELSE 0 END) AS ABC,";
SQL=SQL+" SUM(CASE WHEN TRXCODE = '"+temp4+"' THEN 1 ELSE 0 END) AS COUNT1 ";
SQL=SQL+" FROM "+datasource+" ";
SQL=SQL+" where BUSIDATE>='"+temp1+"' and BUSIDATE<='"+temp2+"' ";
SQL=SQL+" GROUP BY DRACCNO";
SQL=SQL+" ORDER BY "+temp3+"