急,急,急,在线等!! 字符串查询表问题

pcdecc 2010-09-30 10:26:02
我在页面上得到了一个字符串数组,aaa,bbb 截取以后,我一个个去遍历了!、
Object roleObject = select.getValue();
String roleName = roleObject.toString();
roleName = roleName.substring(1,roleName.length()-1);
String[] nameString = roleName.split(",");
for (int i = 0; i < nameString.length; i++)
{
Role role = new Role();
System.out.println(nameString[i]+"------");//这里可以查到两个值
String name = nameString[i];
role = VaadinApplication.getFacadeManager().getRolesManager().getRole(name);
System.out.println(role.getName()+"+"+role.getId());//第二次打印的时候出错
}
可是在这里role = rolesManager().getRole(name);的时候,在dao层,也传过去了两个数值,可是到第二个数值的时候
List<Role> list = dao.select(name);
System.out.println(list.size()+"this is dao");
if(list != null && list.size() >= 0){
return list.get(0);
}
return null;
他就不会在执行return list.get(0)
包Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
list.size()第一次的为1,第二次打印出来而为0 我把list.size>=0改为list.size>0的话,他就到前台去报错了
查询语句为:select * from role where role.name = name;
...全文
141 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
pcdecc 2010-09-30
  • 打赏
  • 举报
回复
哈哈!!代码很微妙,我很粗心
pcdecc 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 dr_lou 的回复:]

String.replaceAll(" ","");
[/Quote]

非常感谢,可以了
dr_lou 2010-09-30
  • 打赏
  • 举报
回复
String.replaceAll(" ","");
dr_lou 2010-09-30
  • 打赏
  • 举报
回复
replace ?
pcdecc 2010-09-30
  • 打赏
  • 举报
回复
我发现了我的问题了啊!!我第二次得到的时候,String name = nameString[i];他前面有一个空格! 请问有什么办法第二次去掉不!!
pcdecc 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 dr_lou 的回复:]

现在页面上输出String[] nameString试试2个都能split出来否。
然后再试试一个个的select是否都能出来。
[/Quote]
可以!!
roleName = roleName.substring(1,roleName.length()-1);
System.out.println(roleName+"没有截取前");
System.out.println(nameString[i]+"截取之后循环得到");//这里可以查到两个值

ROLE_ADMIN, ROLE_STAFF没有截取前
ROLE_ADMIN截取之后循环得到
ROLE_STAFF截取之后循环得到
dr_lou 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 cceicc 的回复:]
引用 18 楼 shanxmxj 的回复:

引用楼主 cceicc 的回复:
for (int i = 0; i < nameString.length; i++)
{
Role role = new Role();
System.out.println(nameString[i]+"------");//这里可以查到两个值
String name = nameString[i];……
[/Quote]

不判断为空 没法get属性
dr_lou 2010-09-30
  • 打赏
  • 举报
回复
现在页面上输出String[] nameString试试2个都能split出来否。
然后再试试一个个的select是否都能出来。
pcdecc 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 shanxmxj 的回复:]

引用楼主 cceicc 的回复:
for (int i = 0; i < nameString.length; i++)
{
Role role = new Role();
System.out.println(nameString[i]+"------");//这里可以查到两个值
String name = nameString[i];
role = VaadinApplica……
[/Quote]
我知道这样也可以!可是我想要的是把我查询出来的role,存到map里面 如果这样去判断的话! 就失去的我的目的了啊!
roleMap.put(name, role);
shanxmxj 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 cceicc 的回复:]
我在页面上得到了一个字符串数组,aaa,bbb 截取以后,我一个个去遍历了!、
Object roleObject = select.getValue();
String roleName = roleObject.toString();
roleName = roleName.substring(1,roleName.length()-1);
String[] nameString = ……
[/Quote]
把代码 打断点调试一下 看看是哪里没有取上值
shanxmxj 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 cceicc 的回复:]
for (int i = 0; i < nameString.length; i++)
{
Role role = new Role();
System.out.println(nameString[i]+"------");//这里可以查到两个值
String name = nameString[i];
role = VaadinApplication.getFacadeManager().getRolesManager().getRole(name);
System.out.println(role.getName()+"+"+role.getId());//第二次打印的时候出错
}
可是在这里role = rolesManager().getRole(name);的时候,在dao层,也传过去了两个数值,可是到第二个数值的时候
List<Role> list = dao.select(name);
System.out.println(list.size()+"this is dao");
if(list != null && list.size() >= 0){
return list.get(0);
}
return null;
他就不会在执行return list.get(0)
[/Quote]

在这里应该判断一下 role有没有值 是否为空 然后取值
pcdecc 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 dr_lou 的回复:]

引用 14 楼 cceicc 的回复:
引用 11 楼 dr_lou 的回复:

List<Role> list = dao.select(name);
System.out.println(list.size()+"this is dao");

list.size()第一次的为1,第二次打印出来而为0

因为第二次没查到

所以 你觉得我要怎么做才能把第二条记录查出来呢?……
[/Quote]
sqlserver 数据库里面真的有啊!!
dr_lou 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 cceicc 的回复:]
引用 11 楼 dr_lou 的回复:

List<Role> list = dao.select(name);
System.out.println(list.size()+"this is dao");

list.size()第一次的为1,第二次打印出来而为0

因为第二次没查到

所以 你觉得我要怎么做才能把第二条记录查出来呢??
[/Quote]

dao.select是去数据库取东西吧! 你数据库没有 怎么查的出来呢。
pcdecc 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 shanxmxj 的回复:]

引用楼主 cceicc 的回复:
list.size()第一次的为1,第二次打印出来而为0 我把list.size>=0改为list.size>0的话,他就到前台去报错了
查询语句为:select * from role where role.name = name;
前台报什么错?
[/Quote]
System.out.println(role.getName()+"+"+role.getId());//第二次打印的时候出错
Cause: java.lang.NullPointerException空指针
pcdecc 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 dr_lou 的回复:]

List<Role> list = dao.select(name);
System.out.println(list.size()+"this is dao");

list.size()第一次的为1,第二次打印出来而为0

因为第二次没查到
[/Quote]
所以 你觉得我要怎么做才能把第二条记录查出来呢??
pcdecc 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 shanxmxj 的回复:]

if(list != null && list.size() >= 0){
return list.get(0);
}

这里 判断不对
list.size() = 0 了 里面就没有记录了 还怎么取get(0)啊
[/Quote]
恩!! 是的!! 可是明明里面是有两条记录的、、、
shanxmxj 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 cceicc 的回复:]
list.size()第一次的为1,第二次打印出来而为0 我把list.size>=0改为list.size>0的话,他就到前台去报错了
查询语句为:select * from role where role.name = name;[/Quote]
前台报什么错?
dr_lou 2010-09-30
  • 打赏
  • 举报
回复
List<Role> list = dao.select(name);
System.out.println(list.size()+"this is dao");

list.size()第一次的为1,第二次打印出来而为0

因为第二次没查到
shanxmxj 2010-09-30
  • 打赏
  • 举报
回复
if(list != null && list.size() >= 0){
return list.get(0);
}

这里 判断不对
list.size() = 0 了 里面就没有记录了 还怎么取get(0)啊
pcdecc 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dr_lou 的回复:]

第2次是什么意思?再次执行?
[/Quote]
恩! 因为他会等到两次role的名字啊! 所以要去执行两次 得到id值
加载更多回复(8)

13,100

社区成员

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

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