预编译不成功怎么解决

正在回答

登陆购买课程后可参与讨论,去登陆

7回答

同学你好。可以检查一下代码中有没有使用rs.getString();的地方。使用rs.getString();前一定要加上rs.next();

ResultSet对象代表SQL语句执行的结果集,维护指向其当前数据行的光标。

每调用一次next()方法,光标向下移动一行。最初它位于第一行之前,因此第一次调用next()应把光标置于第一行上,使它成为当前行。

随着每次调用next()将导致光标向下移动一行。在ResultSet对象以及其他父辈Statement对象关闭之前,光标一直保持有效。

如果解答了同学的疑问,望采纳~

祝学习愉快~


提问者 LuckiTC 2019-07-05 20:00:17

呃呃呃。尴尬,我一直以为是数据连接方面的问题,没有仔细看,,抱歉

提问者 LuckiTC 2019-07-05 19:56:50

这是我UserDaoImpl的代码,其中re.next()部分根本不执行。直接跳过了,请问大概是哪里的错误


芝芝兰兰 2019-07-05 19:55:41

同学你好。

1、到后面老师会用到日志,设置为debug级别就可以将参数打印输出了,同学可以看一下 MyBatis入门 4-1 log4j在mybatis中的使用 课程https://class.imooc.com/lesson/723#mid=18006 3分左右

http://img1.sycdn.imooc.com//climg/5d1f3b5700010bd713440209.jpg

2、同学这里在rs.next之前使用了

http://img1.sycdn.imooc.com//climg/5d1f38900001924712850708.jpg

如果解答了同学的疑问,望采纳~

祝学习愉快~


提问者 LuckiTC 2019-07-05 19:55:07
package com.imooc.dao.Impl;

import java.sql.Connection;
import java.sql.ResultSet;

import com.imooc.dao.UserDao;
import com.imooc.domain.User;
import com.imooc.utils.JDBCUtils;
import java.sql.PreparedStatement;

public class UserDaoImpl implements UserDao {

	@Override
	public User login(User user) {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		System.out.println("开始数据库连接");
		try {
			conn = JDBCUtils.getConnection();
			String sql = "select  * from user where username= ? and password= ?";
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, user.getUsername());
			pstmt.setString(2, user.getPassword());
			//System.out.println(sql);
			rs = pstmt.executeQuery();
			System.out.println(rs.getInt("username"));
			System.out.println("数据库连接成功");

			if (rs.next()) {
				User exitUser = new User();
				exitUser.setUid(rs.getInt("uid"));
				exitUser.setPassword(rs.getString("password"));
				exitUser.setUsername(rs.getString("username"));
				return exitUser;
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JDBCUtils.release(rs, pstmt, conn);
		}
		return null;
	}

}


提问者 LuckiTC 2019-07-05 18:38:43

http://img1.sycdn.imooc.com//climg/5d1f28270001db6219630802.jpg

1这里我想知道怎么能看出prepare成功的对数据库进行操作,

2那个报错显示re.next()没有在getString()前使用,但是我代码里是先用next(0的啊



提问者 LuckiTC 2019-07-05 17:34:36
  • 同学你好。同学输出的是sql变量,本来就是一个String字符串。和预编译是没有没有关系的。即便是预编译成功,sql也不会改变,?还是?的。
    2019-07-05 17:53:11
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师