java预编译的问题,其中sql语句执行不了,其他插入什么的都正常,望指点~

/***查询用户信息*@paramuser:被查询的用户*@return:是否返回查询到的内容,有则返回列表;若无,返回空*/publicList<UserInfo>qu... /**
* 查询用户信息
* @param user:被查询的用户
* @return:是否返回查询到的内容,有则返回列表;若无,返回空
*/
public List<UserInfo> query(UserInfo user){
try {
//创建连接
Connection conn = CreateDB.getConn();
//执行语句
String sql = "select id,name,pwd from userinfo where id=10007";
System.out.println(sql);
//获取sql的预编译执行对象
PreparedStatement pstmt = conn.prepareStatement(sql);
//为每一个搜索值设置占位符
pstmt.setString(1,user.getId()+"");
pstmt.setString(2,user.getName());
pstmt.setString(3,user.getPwd());
//实例化一个集合对象
List<UserInfo> list = new ArrayList<UserInfo>();
//执行SQL语句
ResultSet rs = pstmt.executeQuery();
System.out.println("检测数据不为空!");
//获取结果集中的数据,并返回
while(rs.next()){
//获取数据,根据表格中的标题来获取
UserInfo u = new UserInfo();
u.setId(rs.getInt("id"));
u.setName(rs.getString("name"));
u.setPwd(rs.getString("pwd"));
list.add(u);
}
return list;
} catch (SQLException e) {
//执行语句有误
javax.swing.JOptionPane.showMessageDialog(null,"数据库存取有误!");
return null;//若出现异常,返回false
}
}
展开
 我来答
谁能把人生看透
2012-02-22 · TA获得超过143个赞
知道答主
回答量:44
采纳率:0%
帮助的人:40.7万
展开全部
pstmt.setString(1,user.getId()+"");
pstmt.setString(2,user.getName());
pstmt.setString(3,user.getPwd());
这是以占位符方式设置 sql的参数值。
你的sql语句String sql = "select id,name,pwd from userinfo where id=10007";
没有用到,所以这几句删了就行了。或者改为:
String sql = "select id,name,pwd from userinfo where id=?";
pstmt.setString(1,user.getId()+"");
追问
这样确实搜得出来,谢谢了~不过还想请问一下,我的数据库中每个对象有多个属性,如果想取出id,name,pwd三个属性,我用了语句"select id,name,pwd from userinfo where id=? and name=? and pwd=?"为什么还是不行呢,取不出对应数据,应该怎么写呢?非常感谢哦~~~
追答
查不出来数据有可能是:1.数据中没有符合你查询条件的数据。2.sql语句参数设置的不正确
建议:设置断点查看一下。这类小问题通过调试一般都能解决。
韦自香
2012-03-01
知道答主
回答量:37
采纳率:0%
帮助的人:10.8万
展开全部
pstmt.setString(1,user.getId()+"");
这里应该是pstmt.setInt();
pstmt.setString(2,user.getName());
pstmt.setString(3,user.getPwd());
String sql = "select id,name,pwd from userinfo where id=? and name=? and pwd=?";
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
水凌如梦
2012-02-22
知道答主
回答量:32
采纳率:0%
帮助的人:25.6万
展开全部
String sql = "select id,name,pwd from userinfo where id=10007";

pstmt.setString(1,user.getId()+"");
pstmt.setString(2,user.getName());
pstmt.setString(3,user.getPwd());

这个与你的SQL不匹配呀,预编译是需要占位符"?"的,你可以改成如下:
String sql = "select id,name,pwd from userinfo where id=10007";
pstmt.setString(1,user.getId()+"");

2和3参数没有用到,可以不设置哦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
你顶我试试
2012-02-22 · TA获得超过134个赞
知道小有建树答主
回答量:355
采纳率:0%
帮助的人:228万
展开全部
String sql = "select id,name,pwd from userinfo where id=10007";

pstmt.setString(1,user.getId()+"");
pstmt.setString(2,user.getName());
pstmt.setString(3,user.getPwd());

"select id,name,pwd from userinfo where id=? and name=? and pwd=?";
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-02-22
展开全部
pstmt.setString(1,user.getId()+"");
这里应该是pstmt.setInt();吧,试下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式