java sql为什么会报错

SorrowEnding 2013-06-19 05:11:23
String str = "";
conn = DBHelper.getConn();
try
{
ps = conn.prepareStatement("select (select b.Name from Permission b where b.ID=a.PermissionID) name from UserAccountXPermission a where a.UserAccountID = (select ID from UserAccount where UserName=?)");
ps.setString(1, ua.getUsername());
rs = ps.executeQuery();
str = rs.getString("name");
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
DBHelper.close(conn, ps, rs);
}
return str;


为什么执行这条语句会报错 不能执行这么长的吗?还是其他方法
...全文
320 18 打赏 收藏 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
n27741 2013-06-24
  • 打赏
  • 举报
回复
Before start of result set 记录指针位置在记录头,要Next一下
ffc253605481 2013-06-24
  • 打赏
  • 举报
回复
SQL语句直接写错了..
nongzhenqin 2013-06-24
  • 打赏
  • 举报
回复
SQL语句有问题。
myisfei 2013-06-23
  • 打赏
  • 举报
回复
是result没有打开, rs = ps.executeQuery(); rs.next(); str = rs.getString("name");
程序员A 2013-06-23
  • 打赏
  • 举报
回复
执行完sql语句后,ResultSet 对象的游标是指向第0行的,当你调用一次rs.next()时,就往下移动,变成1,你取数据是从第1行开始的,所以你在真正调用rs.getString()之前一定要调用rs.next()方法,如果不调用的话,rs.getString取的就是第0行,肯定会有问题的。
Bettygonna 2013-06-19
  • 打赏
  • 举报
回复
会不会是根本没有连接上数据库 at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)
sanfan0819 2013-06-19
  • 打赏
  • 举报
回复
sql语句的问题,你最后是得到哪张表中的name ,如果是由条件得到 Permission表中的name,那么 sql= select Name from Permission where ID=(select PermissionID from serAccountXPermission where UserAccountID=(select ID from UserAccount where UserName=?))
SorrowEnding 2013-06-19
  • 打赏
  • 举报
回复
引用 9 楼 flagiris 的回复:
[quote=引用 8 楼 u011126116 的回复:] [quote=引用 7 楼 flagiris 的回复:] rs = ps.executeQuery(); while(rs.next()){ str = rs.getString("name"); } 跟sql没关系么,虽然sql写法有点。。。
不知道怎么写好点。。能指教下吗[/quote] 什么意思? 结果集一行的话, 直接 rs = ps.executeQuery(); rs.next();//加上这一句 str = rs.getString("name"); 多行就像上面一样,用while[/quote] 我指的是那个sql语句啊~
菖蒲老先生 2013-06-19
  • 打赏
  • 举报
回复
引用 8 楼 u011126116 的回复:
[quote=引用 7 楼 flagiris 的回复:] rs = ps.executeQuery(); while(rs.next()){ str = rs.getString("name"); } 跟sql没关系么,虽然sql写法有点。。。
不知道怎么写好点。。能指教下吗[/quote] 什么意思? 结果集一行的话, 直接 rs = ps.executeQuery(); rs.next();//加上这一句 str = rs.getString("name"); 多行就像上面一样,用while
SorrowEnding 2013-06-19
  • 打赏
  • 举报
回复
引用 7 楼 flagiris 的回复:
rs = ps.executeQuery(); while(rs.next()){ str = rs.getString("name"); } 跟sql没关系么,虽然sql写法有点。。。
不知道怎么写好点。。能指教下吗
菖蒲老先生 2013-06-19
  • 打赏
  • 举报
回复
rs = ps.executeQuery(); while(rs.next()){ str = rs.getString("name"); } 跟sql没关系么,虽然sql写法有点。。。
火影之贺 2013-06-19
  • 打赏
  • 举报
回复
select (select 这里明显语法错误!
SorrowEnding 2013-06-19
  • 打赏
  • 举报
回复
引用 3 楼 ydb7459022 的回复:
报什么错都不贴出来,怎么看!!
java.sql.SQLException: Before start of result set
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
	at com.mysql.jdbc.ResultSet.checkRowPos(ResultSet.java:720)
	at com.mysql.jdbc.ResultSet.getStringInternal(ResultSet.java:5624)
	at com.mysql.jdbc.ResultSet.getString(ResultSet.java:5544)
	at com.mysql.jdbc.ResultSet.getString(ResultSet.java:5584)
	at Handler.UserAccountHandler.checkUser(UserAccountHandler.java:48)
	at UI.LoginUI$Monitor.actionPerformed(LoginUI.java:72)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$200(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.awt.EventQueue$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
SorrowEnding 2013-06-19
  • 打赏
  • 举报
回复
引用 2 楼 u010863631 的回复:
select (select b.Name from Permission b where b.ID=a.PermissionID) name from UserAccountXPermission a where a.UserAccountID = (select ID from UserAccount where UserName=?) 这句sql错了 换成 select name from UserAccountXPermission a where a.UserAccountID = (select ID from UserAccount where UserName=?) 试试
我的UserAccountXPermission 没有name的啊~只有UserAccountID和PermissionID ,Permisson表里才有name 我在数据库里运行可以的。但是程序就报错
ydb7459022 2013-06-19
  • 打赏
  • 举报
回复
报什么错都不贴出来,怎么看!!
「已注销」 2013-06-19
  • 打赏
  • 举报
回复
select (select b.Name from Permission b where b.ID=a.PermissionID) name from UserAccountXPermission a where a.UserAccountID = (select ID from UserAccount where UserName=?) 这句sql错了 换成 select name from UserAccountXPermission a where a.UserAccountID = (select ID from UserAccount where UserName=?) 试试
rumlee 2013-06-19
  • 打赏
  • 举报
回复
把语句直接在数据库里面执行一下看看报告什么错误啊,或者看在程序里面执行抛出什么异常啊。 肯定不是因为不能执行这么长的,你这语句也叫长啊,很短的了。

62,620

社区成员

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

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