以下代码是根据ID进行查询 但我不明白原理 特别是SET和GET方法这有点糊涂 哪位大大能帮我从上到下解释下代码 小弟感激不尽 特别是判断语句IF那 多谢 public UserDTO findById(int id) {
UserDTO dto = new UserDTO();
conn = GetConnection.getConnection();
try {
ps = conn.prepareStatement("select * from t_user where id=?");
ps.setInt(1, id);
rs = ps.executeQuery();
if (rs.next()) {
dto.setId(rs.getInt("id"));
dto.setUsername(rs.getString("username"));
dto.setPwd(rs.getString("pwd"));
dto.setSex(rs.getString("sex"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return dto;
} public static void main(String[] args) {
UserDAOfindById dao = new UserDAOfindById();
UserDTO dto = dao.findById(6);
System.out.print(dto.getId());
System.out.print(dto.getUsername());
System.out.print(dto.getPwd());
System.out.print(dto.getSex());
}
}
UserDTO dto = new UserDTO();
conn = GetConnection.getConnection();
try {
ps = conn.prepareStatement("select * from t_user where id=?");
ps.setInt(1, id);
rs = ps.executeQuery();
if (rs.next()) {
dto.setId(rs.getInt("id"));
dto.setUsername(rs.getString("username"));
dto.setPwd(rs.getString("pwd"));
dto.setSex(rs.getString("sex"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return dto;
} public static void main(String[] args) {
UserDAOfindById dao = new UserDAOfindById();
UserDTO dto = dao.findById(6);
System.out.print(dto.getId());
System.out.print(dto.getUsername());
System.out.print(dto.getPwd());
System.out.print(dto.getSex());
}
}
解决方案 »
- JAVA初学者要看哪些书
- 用java如何获取对MS Server2005刚刚插入数据的ID值?
- 如何测试weblogic 的ForeignServer的连接情况?
- 问一个struts2 <s:doubleselect /> 的问题
- 乱码问题:"~"输出的画面不能识别,在线等待
- 求大神解决超难问题,一条数据执行多次...
- 怎样设置tomcat和weblogic:如果用户输入的路径不存在,就自动转向指定的页面。
- 哪位有j2ee建一个简单的工程的步骤的资料?
- Ibatis的sqlMap配置文件中不能写中文
- 这是怎么回事?
- request.getParameter("PageNo")因为这条语句中的参数“PageNo”不存在,而出异常的解决方法
- java添加水晶报表
conn = GetConnection.getConnection();
try {
ps = conn.prepareStatement("update t_user set username=?,pwd=?,sex=? where id=?");
ps.setString(1, dto.getUsername());
ps.setString(2, dto.getPwd());
ps.setString(3, dto.getSex());
ps.setInt(4, dto.getId());
boolean s = ps.execute();
System.out.println(s);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 关闭连接
GetConnection.closeConnection(ps, conn);
} } public static void main(String[] args) {
UserDAOupdate dao = new UserDAOupdate();
UserDTO dto = new UserDTO();
dto.setUsername("李小龙");
dto.setPwd("小龙");
dto.setSex("男");
dto.setId(4);
dao.update(dto);
}}
先通过id从数据库表t_user中找到所对应的记录,再把找到的记录按各个字段设置到对象UserDTO中,在main方法中通过UserDTO对象输出数据。而UserDTO中的属性和t_user表中的字段是一一对应的
UserDTO dto = new UserDTO(); //初始化BEAN
conn = GetConnection.getConnection();//获得数据库连接
try {
ps = conn.prepareStatement("select * from t_user where id=?"); //预处理SQL语句 ?等于是一个标识符
ps.setInt(1, id);//设置标识符
rs = ps.executeQuery();执行SQL语句
if (rs.next()) {//如果SQL语句返回的结果有下一个。就执行
dto.setId(rs.getInt("id"));//set是设置 get是得到 先赋值 后使用
dto.setUsername(rs.getString("username"));
dto.setPwd(rs.getString("pwd"));
dto.setSex(rs.getString("sex"));
}
} catch (SQLException e) {//捕捉数据库异常e.printStackTrace(); //这个我不了解没用过
}
return dto;返回bean类
}public static void main(String[] args) {
UserDAOfindById dao = new UserDAOfindById();//实例化dao
UserDTO dto = dao.findById(6); //调用dao.findById(int id)方法
System.out.print(dto.getId());打印通过findById(int id)得到的ID
System.out.print(dto.getUsername());打印通过findById(int id)得到的用户名
System.out.print(dto.getPwd());打印通过findById(int id)得到的密码
System.out.print(dto.getSex());打印通过findById(int id)得到的性别
}
}
update语句中所有参数值都来自于dto这个对象,从main方法看来是更新UserDTO对象
实际上还是通过更新d_user表来达到这一目的
conn = GetConnection.getConnection();//获取数据库链接
try {
ps = conn.prepareStatement("update t_user set username=?,pwd=?,sex=? where id=?");预处理SQL
ps.setString(1, dto.getUsername());设置标识符 对应的值
ps.setString(2, dto.getPwd());
ps.setString(3, dto.getSex());
ps.setInt(4, dto.getId());
boolean s = ps.execute();执行SQL语句 返回值保存进 S(布尔型)
System.out.println(s);//打印s值(非TRUE 既false)
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
// 关闭连接
GetConnection.closeConnection(ps, conn);
}}public static void main(String[] args) {
UserDAOupdate dao = new UserDAOupdate();//实例化DAO
UserDTO dto = new UserDTO();//实例化bean
dto.setUsername("李小龙");设置bean属性
dto.setPwd("小龙");
dto.setSex("男");
dto.setId(4);
dao.update(dto);//执行更新!传递封装bean
UserDTO dto = new UserDTO(); //UserDTO为封装数据的实体类,属性有Id,Username,Pwd,Sex
conn = GetConnection.getConnection(); //取得数据库连接
try {
ps = conn.prepareStatement("select * from t_user where id=?");//执行预处理语句
ps.setInt(1, id); //对问号赋值
rs = ps.executeQuery(); //返回结果集
if (rs.next()) { //如果结果集中存在则给对象dto赋值
dto.setId(rs.getInt("id"));
dto.setUsername(rs.getString("username"));
dto.setPwd(rs.getString("pwd"));
dto.setSex(rs.getString("sex"));
}
} catch (SQLException e) {e.printStackTrace(); //否则捕捉异常
}
return dto;
}public static void main(String[] args) {
UserDAOfindById dao = new UserDAOfindById();
UserDTO dto = dao.findById(6); //用对象dto调用findById(id)方法
System.out.print(dto.getId()); //打印属性值
System.out.print(dto.getUsername());
System.out.print(dto.getPwd());
System.out.print(dto.getSex());
}
}
ps = conn.prepareStatement("select * from t_user where id=?"); //SQL查询语句
ps.setInt(1, id); //把传入参数(id)给占位符
rs = ps.executeQuery(); //执行语句
if (rs.next()) { //是否查询到数据?
dto.setId(rs.getInt("id")); //把查询到的数据赋值
dto.setUsername(rs.getString("username"));
dto.setPwd(rs.getString("pwd"));
dto.setSex(rs.getString("sex"));整体意思就是你通过传入一个 ID查询数据,如果查询到数据,把相应数据set到 UserDTO 中,那你通过UserDTO的get方法就可以得到相应的数据。 不知道明白否,能力就那么多了,只能这么解释了
dto.setId(rs.getInt("id")); //把查询到的数据赋值 这句话让人很纠结! 查询出来的数据就可以直接赋值 ! 是口误?
dto.setUsername(rs.getString("username"));
dto.setPwd(rs.getString("pwd"));
dto.setSex(rs.getString("sex"));
希望楼主给点分。大伙都讲了,我就没必要。
不过还是建议楼主去看下jdbc的API,对你会有好处的。