2010-09-07 76 views
1

在登录页面我做验证该用户被允许进入系统, 我做了Methode其验证用户:无效的SQL语句

boolean isValidUser(Connection con,String userName,String pass){} 

它正常工作的桌面应用程序,但是当我试图在servlet它使表或视图不存在?但表中是存在我的数据库? 有人可以告诉我问题在哪里吗?

这是方法

public boolean isValidUser(Connection con,String userName,String pass)throws SQLException 
{ 
    String selSQL="SELECT USER_NAME, USER_PASS FROM OSQS_USERS where USER_NAME =? and USER_PASS =?"; 
    ResultSet rs =null; 
    boolean exist =false; 
    PreparedStatement pstmt = null; 
    try { 

     pstmt = con.prepareStatement(selSQL); 
     pstmt.setString(1,userName); 
     pstmt.setString(2, pass); 

     rs=pstmt.executeQuery(); 
     if(rs.next()) 
      exist= true; 

    } 
//close statment and result sest 
return exist; 
} 
+0

这可能有助于提供关于异常和关于JDBC配置的更多细节。 – Bruno 2010-09-07 23:41:22

+0

有没有机会看到查询数据库的代码? – 2010-09-07 23:41:45

+0

这是例外{ORA-00942:表或视图不存在} – palAlaa 2010-09-07 23:43:14

回答

2

如果Oracle告诉你,一个表或视图“不存在”,则是告诉你,无法找到他们... ...即使你认为它应该找到它们。

我会冒险猜测您在桌面应用程序和servlet中运行时连接到不同的Oracle数据库。这可能是由设计或意外造成的。

看看你的各自的JDBC配置;特别是连接网址。 (这也可能是一个权限问题,但我认为Oracle会告诉你,你没有权限使用表或视图...而不是告诉你它不会“T存在。)

编辑

我怀疑根本的问题是,‘在JDBC URL本地主机’是送你的台式机和servlet不同的主机(因此Oracle数据库服务器)案例。尝试使用包含您尝试使用的数据库的服务器的实际DNS名称。

如果有,我应该在哪里将数据添加到ORCLE数据库进行测试我的应用程序

你应该问你的本地数据库管理员这个问题!

+0

我的数据库名称是orcl,这是数据库位置“jdbc:oracle:thin:// @ localhost:1521/orcl但我做新用户测试哪我将用户添加到,因此我不想使用具有完整权限的系统用户,当我建立连接到数据库时,我使用con或orcl数据库,你认为这是问题吗?如果是的话,我应该在哪里添加数据到orcle db来测试我的应用程序 – palAlaa 2010-09-08 00:00:54

3

鉴于相同的代码在桌面应用程序的上下文中正确执行,您可能需要检查正用于检索servlet中连接的JDBC连接详细信息。

这对于像Oracle这样的数据库很重要,因为多个数据库用户帐户可以存在于单个数据库安装中。很有可能在数据库应用程序的上下文中使用单独的Oracle用户帐户,而在servlet的上下文中使用另一个帐户。在Oracle中,数据库对象由特定用户拥有,并且如果其他帐户希望访问相同的帐户,则必须授予第二个帐户权限。

如果您无法更改用于从servlet访问数据库的凭据,请考虑为第二个用户授予必要的权限(在这种情况下为SELECT),但我必须承认它不会完全解决您的问题。第二个数据库用户帐户需要或多或少地拥有第一个数据库所拥有的所有对象的权利,因为您的应用程序不太可能使用多个数据库帐户。

1

您的数据库用户可能与表的所有者不同,因此除非您授予对该表的选定权限(并且对所有引用:tablename - > owner.tablename加前缀),Oracle不会让您访问该表。