写一个注册登录系统,出现com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException Unknown column 'role' in 'field list'这个异常,百度了一下说是标段不存在,明明我的数据库里有啊,求解!我网数据库里自己添加了用户名和密码,能登录进去,但是注册就出现这个异常,贴出关键代码
CheckLogin.java
package com;import java.sql.*;
import java.util.*;
import java.text.SimpleDateFormat;public class CheckLogin {
/**
* 检测用户登录信息
* @param String nickName
* 用户登录的用户名
* @param String userPassword
* 用户登录的密码
* @return String
* 返回一个字符串:如果用户名已经在数据库存在并且用户输入的密码也正确
返回字符串 SUCCESS_LOGIN
* 如果用户名已经在数据库存在但是输入的密码不正确
返回字符串 WRONG_PASSWROD
* 如果用户名不存在返回字符串 NONE_USER
* */
public String checklogin(String nickName,String userPassword)
throws SQLException,ClassNotFoundException
{
BaseConn conn = null;
try
{
conn = new BaseConn();
//创建一个用预处理的SQL语句
String sql = "select * from userinfo where nickName=?";
//创建一个预处理SQL对象
PreparedStatement ps = conn.preparedStatement(sql);
ps.setString(1,nickName);
//从数据库中查询该用户名是否在数据库存在
ResultSet rs = conn.executeQuery();
if(rs.next())
{
if(rs.getString("userPassword").equals(userPassword))
{
return "SUCCESS_LOGIN";
}
else
return "WRONG_PASSWORD";
}
else
return "NONE_USER";
}catch(SQLException ex)
{
ex.printStackTrace();
throw ex;
}catch(ClassNotFoundException ex)
{
ex.printStackTrace();
throw ex;
}
finally
{
conn.closeDB(); //关闭数据库连接,释放JDBC资源
}
}
/**
* 如果是新用户时,将用户登录用户名和密码保存到数据库中
* */
public boolean saveToDataBase(String nickName,String userPassword)
throws SQLException,ClassNotFoundException
{
BaseConn conn = null;
try
{
conn = new BaseConn();
int role = 0;
String sql = "insert into userinfo(nickName,userPassword,role) values(?,?,?)";
PreparedStatement ps = conn.preparedStatement(sql);
ps.setString(1,nickName);
ps.setString(2,userPassword);
ps.setInt(3, role);
conn.executeUpdate();
return true;
}catch(SQLException ex)
{
ex.printStackTrace();
throw ex;
}catch(ClassNotFoundException ex)
{
ex.printStackTrace();
throw ex;
}finally
{
conn.closeDB(); //关闭数据库连接,释放JDBC资源
}
}
}register_post.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@page import="com.CheckLogin"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'register_post.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<jsp:useBean id="check" class="com.CheckLogin"/>
<body>
<%
/*
设置request的字符集为GB2312
GB2312就是简体中文字符集,如果在这里不设置GB2312编码,所有的中文字符
都会变为乱码。
如果在这里需要使用繁体中文的话也会出现字符乱码的问题,将GB2312改为
GBK可解决。
*/
request.setCharacterEncoding("GB2312");
//获取用户昵称
String nickName = request.getParameter("nickName");
//获取用户密码
String userPassword=request.getParameter("userPassword");
//将获取到的用户登录信息与数据库中保存的用户信息进行比较
String loginMsg = check.checklogin(nickName,userPassword);
if(loginMsg.equals("SUCCESS_LOGIN"))
{
out.println("该用户已经存在,请重新选择用户名");
}
else if(loginMsg.equals("WRONG_PASSWORD"))
{
out.println("该用户已经存在,请重新选择用户名");
}
else if(loginMsg.equals("NONE_USER"))
{
boolean sf = check.saveToDataBase(nickName,userPassword);
if(sf)
{
out.println("注册成功");
%>
<br>
<tr><a href="login.jsp">返回登录</a></tr>
<%
}
}
else
{
out.println("该用户名已经存在,请选择另一个用户名注册");
}
%>
</body>
</html>
CheckLogin.java
package com;import java.sql.*;
import java.util.*;
import java.text.SimpleDateFormat;public class CheckLogin {
/**
* 检测用户登录信息
* @param String nickName
* 用户登录的用户名
* @param String userPassword
* 用户登录的密码
* @return String
* 返回一个字符串:如果用户名已经在数据库存在并且用户输入的密码也正确
返回字符串 SUCCESS_LOGIN
* 如果用户名已经在数据库存在但是输入的密码不正确
返回字符串 WRONG_PASSWROD
* 如果用户名不存在返回字符串 NONE_USER
* */
public String checklogin(String nickName,String userPassword)
throws SQLException,ClassNotFoundException
{
BaseConn conn = null;
try
{
conn = new BaseConn();
//创建一个用预处理的SQL语句
String sql = "select * from userinfo where nickName=?";
//创建一个预处理SQL对象
PreparedStatement ps = conn.preparedStatement(sql);
ps.setString(1,nickName);
//从数据库中查询该用户名是否在数据库存在
ResultSet rs = conn.executeQuery();
if(rs.next())
{
if(rs.getString("userPassword").equals(userPassword))
{
return "SUCCESS_LOGIN";
}
else
return "WRONG_PASSWORD";
}
else
return "NONE_USER";
}catch(SQLException ex)
{
ex.printStackTrace();
throw ex;
}catch(ClassNotFoundException ex)
{
ex.printStackTrace();
throw ex;
}
finally
{
conn.closeDB(); //关闭数据库连接,释放JDBC资源
}
}
/**
* 如果是新用户时,将用户登录用户名和密码保存到数据库中
* */
public boolean saveToDataBase(String nickName,String userPassword)
throws SQLException,ClassNotFoundException
{
BaseConn conn = null;
try
{
conn = new BaseConn();
int role = 0;
String sql = "insert into userinfo(nickName,userPassword,role) values(?,?,?)";
PreparedStatement ps = conn.preparedStatement(sql);
ps.setString(1,nickName);
ps.setString(2,userPassword);
ps.setInt(3, role);
conn.executeUpdate();
return true;
}catch(SQLException ex)
{
ex.printStackTrace();
throw ex;
}catch(ClassNotFoundException ex)
{
ex.printStackTrace();
throw ex;
}finally
{
conn.closeDB(); //关闭数据库连接,释放JDBC资源
}
}
}register_post.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@page import="com.CheckLogin"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'register_post.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<jsp:useBean id="check" class="com.CheckLogin"/>
<body>
<%
/*
设置request的字符集为GB2312
GB2312就是简体中文字符集,如果在这里不设置GB2312编码,所有的中文字符
都会变为乱码。
如果在这里需要使用繁体中文的话也会出现字符乱码的问题,将GB2312改为
GBK可解决。
*/
request.setCharacterEncoding("GB2312");
//获取用户昵称
String nickName = request.getParameter("nickName");
//获取用户密码
String userPassword=request.getParameter("userPassword");
//将获取到的用户登录信息与数据库中保存的用户信息进行比较
String loginMsg = check.checklogin(nickName,userPassword);
if(loginMsg.equals("SUCCESS_LOGIN"))
{
out.println("该用户已经存在,请重新选择用户名");
}
else if(loginMsg.equals("WRONG_PASSWORD"))
{
out.println("该用户已经存在,请重新选择用户名");
}
else if(loginMsg.equals("NONE_USER"))
{
boolean sf = check.saveToDataBase(nickName,userPassword);
if(sf)
{
out.println("注册成功");
%>
<br>
<tr><a href="login.jsp">返回登录</a></tr>
<%
}
}
else
{
out.println("该用户名已经存在,请选择另一个用户名注册");
}
%>
</body>
</html>
解决方案 »
- 菜鸟问题
- 全选后有多值怎么更新到数据库中去
- java招聘要求会用webservices,是指什么啊
- jsp页面上的excal 如何传值到后台?
- 为什么我的MyEclipse_6.0.1安装完成后没法运行
- myeclipse6.0整合struts1.2+spring2.0+hibernate3.1总是报错 求一个完整的代码(只要有crud一种就可以) 50分相送
- 限制同一ip访问的问题
- 各位有这个 tomcat-replication.jar 文件吗?
- 回答问题者送分送分,嘻嘻~~
- Hibernate据说还不支持存储过程,它究竟有什么好?
- 如何使用字符串作为判断条件?
- 关于ibatis+oracle的异常,请各位大哥帮忙分析下
改为utf-8吧,插入的时候,估计变乱码了。
这次又出现新错了!org.apache.jasper.JasperException: An exception occurred processing JSP page /register_post.jsp at line 5552: }
53: else if(loginMsg.equals("NONE_USER"))
54: {
55: boolean sf = check.saveToDataBase(nickName,userPassword);
56: if(sf)
57: {
58: out.println("注册成功");
org.apache.jasper.JasperException: An exception occurred processing JSP page /register_post.jsp at line 5552: }
53: else if(loginMsg.equals("NONE_USER"))
54: {
55: boolean sf = check.saveToDataBase(nickName,userPassword);
56: if(sf)
57: {
58: out.println("注册成功");