JDBC 和 JSP 数据库连接

Posted

技术标签:

【中文标题】JDBC 和 JSP 数据库连接【英文标题】:JDBC and JSP Database connection 【发布时间】:2012-07-10 15:05:05 【问题描述】:

嘿,所以我现在有点困惑。我在这里有一些 system.out.print 代码,以便找出问题所在。无论如何,这是我得到的错误,它在涉及实际 SQL 查询的 try/catch 中被捕获。

这里是我的代码。

JSP 页面

<%@ page import="webtest.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>


<%String username = request.getParameter("username");
String password = request.getParameter("password");
UserNameCheck unc = new UserNameCheck();
%>
<H1>
<%=unc.LoginResults("select name,password from mattroepracticetable" +
        " where name='"+username+"' and password='"+password+"' ")%>

</H1>
</body>
</html>

这是 UserNameCheck 类

package webtest;

import java.sql.*;
public class UserNameCheck
DWConnect dwc = new DWConnect();

public String LoginResults(String sql)
Statement stmt;
ResultSet rslt;
System.out.println(sql);
String V=null;
try
    stmt = dwc.conn.createStatement();
    System.out.print(sql);
    rslt = stmt.executeQuery(sql);
    if (rslt.next())
         V = rslt.getString("username");
        System.out.print("hey");
    
    else V = "Invalid UserName or Password";
    System.out.print("not hey");

catch (Exception e)System.out.print(e);
return V;


无论如何我收到的错误如下

select name,password from mattroepracticetable where name='MattRoe' and password='MattRoe' java.sql.SQLException: Invalid column name

但是,如果我直接将 SQL 表达式复制并粘贴到 SQLplus 中,它就可以正常工作。 我知道你应该在 jspinit 中初始化一个数据库连接,但我也认为你可以这样做。 如果有人可以解释我哪里出错了,请告诉我如何通过 jspinit 进行设置,或者我一般如何进行设置,将不胜感激。

【问题讨论】:

【参考方案1】:

您的查询是:

select
   name,password from mattroepracticetable
where 
   name='"+username+"' and password='"+password+"'"

但是你试图从 ResultSet 中读取:

V = rslt.getString( "username" );

你应该把它改成:

V = rslt.getString( "name" );

【讨论】:

谢谢。不敢相信我错过了这么愚蠢的错误。现在一切正常 @Matt 勾选接受链接。 :) @Ravinder 这让我等待,我离开去吃午饭。哈哈

以上是关于JDBC 和 JSP 数据库连接的主要内容,如果未能解决你的问题,请参考以下文章

为啥我在使用 JDBC 和 MySQL 的 JSP 中出现连接失败错误

jsp怎样用jdbc连接mysql数据库

JSP 中的 JDBC 连接

jsp简易登录和注册及JDBC连接Oracle

Jdbc连接数据库实验报告

JSP访问数据库(网上书店项目---创建数据库和JDBC连接数据库测试)