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
}
} 展开
* 查询用户信息
* @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
}
} 展开
5个回答
展开全部
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()+"");
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语句参数设置的不正确
建议:设置断点查看一下。这类小问题通过调试一般都能解决。
展开全部
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=?";
这里应该是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=?";
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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参数没有用到,可以不设置哦。
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参数没有用到,可以不设置哦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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=?";
和
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();吧,试下
这里应该是pstmt.setInt();吧,试下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询