preparedStatement错误

萌萌哒的小丁丁 发布于 2015/05/17 10:50
阅读 248
收藏 0

1.问题:我使用 rs.getString("user_name")报这样的错误(如下图)但是我使用rs.getString(1)可以正常获取数据,user表如下图   这是为什么啊?很郁闷哒

user表


2.下面是我写的代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		//处理中文乱码
		response.setContentType("text/html;charset=utf8");
		String user = request.getParameter("user");
		String password = request.getParameter("password");
		
		Connection conn = connDB();
		if(conn == null)
		{
			out.print("false");
			return;
		}
			
		String sql = "select password from user where user_name=?";
		out.print(sql);
		PreparedStatement pst = null;
		ResultSet rs = null;
		try
		{
			pst =  conn.prepareStatement(sql);
			pst.setString(1, user);
		
			rs = pst.executeQuery();
			while(rs.next())
			{
				out.print(rs.getString("user_name"));
			}
		} catch (SQLException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally
		{
			try
			{
				if(rs!=null)
					rs.close();
				if(pst!=null)
					pst.close();
				if(conn!=null)
					conn.close();
			} catch (SQLException e)
			{
				e.printStackTrace();
			}
		}
		out.print(user+password);
	}

	private Connection connDB()
	{
		ConnDB conn = new ConnDB();
		return conn.conn();
	}



3.我的数据源那些配置就不贴了,因为 我使用 rs.getString(1)可以正常获取数据说明那儿没有问题。
加载中
0
范老司
范老司

  @跑步去北京 我看了看你的问题,你问题描述非常清楚,我告诉你你有几个错误

     1,你在使用response设置返回IMME类型数据的时候,html设置字符编码应该是UTF-8而不是utf8(这是mysql数据库的数据引擎字符编码指定格式),在你的第3行

     2,你在查询数据库的时候你只查了password字段的数据,并没有查询所有,所以你可以尝试将你的sql语句修改为如下:

          原sql:   select password from user where user_name = ?

          新sql:   select * from user where user_name = ?

     3,友情提醒,user_name在企业级应用中并不是唯一,如果一个系统允许多个相同的user_name,你该如何去做呢?

0
逍遥北极狼
逍遥北极狼
如果你不是新手,我就想说"呵呵",如果你是新手,请仔细检查。。。我只能帮你到这了
萌萌哒的小丁丁
萌萌哒的小丁丁
对不起,昨天说话不好,望以后多多指教。
逍遥北极狼
逍遥北极狼
回复 @跑步去北京 : rs.getString("password") 可以查看一下JDBC的API http://blog.360chwl.net/tools/jdk1.6_api/java/sql/ResultSet.html
萌萌哒的小丁丁
萌萌哒的小丁丁
首先感谢你的回复,但是如果你知道就可以告诉我一下,多大点事。你觉得我费这么大的功夫贴出错误来,我就没认真看吗?真是不知道了。帮助别人是一件很快乐的事,尤其是老鸟对菜鸟的帮助-----未来的希望。
0
GITTODO
GITTODO
"select password from user where user_name=?" 放到MYSQL 执行下,看看结果
0
霍啸林
霍啸林
直接原因是返回的结果集里没有user_name这一列
0
公孙二狗
公孙二狗

"select password from user where user_name=?"

rs.getString("user_name")

0
南湖船老大
南湖船老大
楼主要学会自己思考,这报错已经很明显了。。。别人说重了你还不高兴,但这种错你都解决不了实在让人。。。
萌萌哒的小丁丁
萌萌哒的小丁丁
我也很无语。主要是我测试 的时候把用户名和密码设置成一样的了,测试的时候难以发现。另外也很粗心。
0
幻影_wbj
只能说楼主有点粗心了,你只select了password当然没有user_name
萌萌哒的小丁丁
萌萌哒的小丁丁
嗯嗯,菜鸟笨笨的。
返回顶部
顶部