java.sql.SQLException:ORA-03115:不支持的网络数据类型或表示形式

时间:2013-01-13 10:28:40

标签: sql oracle servlets

我正在使用Oracle 11g数据库。当我尝试从db访问数据时,它显示错误java.sql.SQLException:ORA-03115:不支持的网络数据类型或表示。我不明白这个错误意味着什么..

我的代码是:

 String uname,pass;
    ResultSet rs = null;
    response.setContentType("text/html");
    PrintWriter out=response.getWriter();
  try
  {
    uname=request.getParameter("uname");
    pass=request.getParameter("pass");
    Connection con=prepareConnection();
    String Query="select uname from passmanager where pass=?";
    PreparedStatement ps=con.prepareStatement(Query);
    ps.setString(1,pass);
    rs=ps.executeQuery(Query);
    if (rs.next() && uname.equalsIgnoreCase(rs.getString("uname")) || uname.equalsIgnoreCase(rs.getString("email"))) {
    HttpSession session = request.getSession(true);
    session.setAttribute("uname", rs.getString(1));

    ServletContext context = getServletContext();
    RequestDispatcher dispatcher = context
                    .getRequestDispatcher("/profile");
    dispatcher.forward(request, response);
  }

任何人帮我解决这个问题..

3 个答案:

答案 0 :(得分:81)

而不是:

rs = ps.executeQuery(Query);

你应该执行:

rs = ps.executeQuery();

否则,您取消准备您的语句并丢失所有参数,因为您为其分配了一个新的SQL语句(即使它是相同的)。

答案 1 :(得分:0)

添加电子邮件列

select uname, email from passmanager where pass=?

答案 2 :(得分:0)

当您尝试按名称获取字段(在您的情况下为rs.getString(" uname"))时,会出现此错误,该字段不在结果集中。

和igr说的一样,你试图获取电子邮件字段(使用rs.getString(&#34; email&#34;))并且它不在查询中,所以这是你的错误。< / p>

我找到了这个对话,因为当我试图在字符串的末尾(rs.getString(&#34; uname&#34;))获取一个带有空格的字段时,我在应用程序中遇到了同样的错误rs.getString(&#34; uname&#34;)。

我只是使用我从查询中获得的字段的正确名称来修复它。

我希望它有用! ;)