result conn等要放到try外面来定义
解决方案 »
- hibernate ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 BINARY
- poi 导入大量数据到excel内存溢出,在线等
- 严重:Exception starting filter encodingFilter
- 请大侠们帮帮忙,看下
- 求JSP上传图片到数据库的例子
- 简单问题...在线等老鸟~
- 各為帥哥 拉兄弟一把 萬分感謝!
- jsp两个按钮提交一个表单到不同的页面,按钮点击没反应,大家帮忙看看!
- JSP如何写和读大字段
- 请问如何在javascript中动态的指定框架页显示的网页内容。
- 高分求教!按回车提交的问题?
- 这个问题是初学jsp得人问的,主要是关于jsp的主要用途
String rusult=null;
改为
String result=null;
和下面的 result 变量名称不同.2. rs 要放到 try 外面定义.3. stmt 要放到 try 外面定义.4. conn 要放到 try 外面定义.
<%@ page contentType="text/html; charset=GB2312"
import="java.sql.*"%>
<%!
String CheckLogin(String Login, String Password) throws Exception
{
String result=null;
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=yanzheng";
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from Login"+"where xm ='"+Login+"'";
ResultSet rs=stmt.executeQuery(sql);
if(!rs.next()) //检查记录指标是否指到最後一笔记录
{ //若记录指标在记录集一开启时便指到最後一笔记录则表示没有记录
result = "无此帐号";
}
else if(!rs.getString("pass").equals(Password))
{ //判断密码是否正确
result = "密码错误";
}
else //通过检查表示帐号与密码均正确成功登入
{
result = "成功登入";
}
rs.close();
stmt.close();
conn.close();
return result;
}
%>
<%
String UserNm = request.getParameter("UserNm");
//取得使用者输入的帐号
String UserPasswd = request.getParameter("UserPasswd");
//取得使用者输入的密码//判断使用者帐号与密码所取得值是否为null, 是则将网页导向LogFrm.htm
if(UserNm == null || UserPasswd == null)
response.sendRedirect("LogFrm.jsp");String strCheckLogin = CheckLogin(UserNm, UserPasswd);
//呼叫CheckLogin函数进行帐号与密码的检查if (strCheckLogin.equals("成功登入")) //判断是否成功登入
{
session.setAttribute("UserNm",UserNm);
//将登入帐号储存进session物件中
session.setAttribute("UserPasswd",UserPasswd);
//将帐号密码储存进session物件中
response.sendRedirect("Submain.jsp");
//将显示网页导向Submain.jsp网页
}
%>
<HTML>
<HEAD>
<TITLE>使用者登入</TITLE>
</HEAD>
<BODY>
<CENTER>
<FONT SIZE = 5 COLOR = blue>使用者登入</FONT>
</CENTER>
<HR>
<Center>
<!--若登入失败时才会执行至下面的叙述-->
<%= strCheckLogin %><P></P><A href = "LogFrm.jsp">请重新登入</A>
</Center>
</BODY>
</HTML>
错误为:
org.apache.jasper.JasperException: [Microsoft][SQLServer JDBC Driver][SQLServer]Line 1: Incorrect syntax near '='.
它说是无效的语句?
String sql="select * from Login"+"where xm ='"+Login+"'";是不是这句?
第一个Login是一个表名,表中有两个字段,xm和pass
第二个Login是函数传过来的用户名。
Loginwhere ???????????
遇到这种sql 的错误 最好就是 报 sql 语句 out print 出来
然后直接拿到数据库去执行,马上就看到错误了
确实是空格的原因,现在能够执行了。可还有问题。
问题是密码验证那句话可能有问题,即使你输入了正确的密码,结果显示的还是密码错误!是不是这句有毛病?else if(!rs.getString("pass").equals(Password))
{ //判断密码是否正确
result = "密码错误";实际这句(!rs.getString("pass").equals(Password))什么意思,我也不明白,能否解释解释。
if ( !Password.equals( rs.getString("pass")) )表示如果密码不对
UserPasswd=UserPasswd.trim();可还是,有问题。
输入了正确的用户名和密码后,仍然说密码错误。怎么回事呢?
当密码错误的时候,我特意让显示的结果为:result = "密码错误"+Password+rs.getString("pass");Password为页面中你输入的 密码;
rs.getString("pass")为当有这个姓名时,从数据库中提取的密码;最后运行时,我输入一个数据库中有的用户名lxf,密码为:5855000运行结果为:使用者登入 ---------------密码错误zh1122zh1122 请重新登入 多邪门啊,密码明明相同,它还是说密码错误!!!
痛苦中…………
~ ~~~ ~ ~~~ ~~