我正在使用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);
}
任何人帮我解决这个问题..
答案 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;)。
我只是使用我从查询中获得的字段的正确名称来修复它。
我希望它有用! ;)