问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java高手请进!关于java中list和数据库的问题

发布网友 发布时间:2022-04-10 09:19

我来回答

3个回答

懂视网 时间:2022-04-10 13:40

先看DAO,在DAO里面没有对name加上单引号,导致数据库查询出错,由于java会自动拼接为字符串

 public AdminDTO selectAdminById(String name){ 
 Connection conn = DbHelper.getConnection();
 String sql = "select * from admin where username= "+name;
 AdminDTO admin = null;
 try {
  PreparedStatement pst = conn.prepareStatement(sql);
  ResultSet rst = pst.executeQuery();
  while (rst.next()) {
  admin = new AdminDTO();
  admin.setId(rst.getInt("id"));
  admin.setUsername(rst.getString("username"));
  admin.setUserpwd(rst.getString("userpwd"));
  }
  rst.close();
  pst.close();
 } catch (SQLException e) {
  e.printStackTrace();
 }

  而在数据库里需要有单引号,本来应该是这样的查询结果

技术分享图片

导致了

技术分享图片

抛出sql错误,解决方法就是

 String sql="select * from admin where username =‘"+name+"‘";

使用该语句来添加单引号解决,但是这还不完美,我们应该定义一个更加完美的方法来执行数据库的查询,

	public static ResultSet executeQuery(String sql, Object... params) throws SQLException {
		Connection conn = ds.getConnection();
		try {
			return executeQuery(conn, sql, params);
		} catch (SQLException ex) {
			closeQuietly(conn);
			throw ex;
		}
	}

  使用该方法来执行查询

参数params为一个可变长度的参数,可以传入参数作为数据库的查询所需的字段

JDBCUtils.executeQuery("select * from T_cities where Id=? and IsDeleted=0", id);

 

另外一个就是重定向的问题了

 

技术分享图片

我们要将校验的servlet的请求重定向到servlet

response.sendRedirect("/ShowServlet");

当然有时候光重定向到主服务器还远远不够,我们需要把响应和请求 都转发到主服务器

			 request.getRequestDispatcher("/ShowServlet").forward(request, response);

还有另外一个方式,但是不推荐使用

response.sendRedirect(request.getContextPath()+"/servlet/ServletB");

为了编写最有效的代码,你应该了解这两种重定向技巧的不同。forward方法是在Web container内部工作的。sendRedirect方法需要到客户端的一个往返。所以forward方法比sendRedirect要快。但是,运用forward方法有局限性,你只能重定向到同一个Web应用程序中的一个资源。而sendRedirect方法可以让你重定向到任何URL。结论:如果可以解决你的问题,那么就用forward方法。只有当你不能用forward方法时才运用sendRedirect方法。

forward不会改变当前浏览器地址栏中的路径

 

 

Java内部转发和数据库的问题

标签:sel   min   resultset   nec   except   编写   select   null   路径   

热心网友 时间:2022-04-10 10:48

我的采用的是javabena+jsp

一个javabean
public ArrayList selectCourseInfo()throws Exception {//下拉框显示课程信息
ArrayList list = new ArrayList();
try {
db.open();
ResultSet rs = db.select("select * from CourseInfo");
while (rs.next()) {
list.add(new CourseInfo(rs.getInt(1), rs.getString(2),rs.getString(3)));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
db.close();
}
return list;
}

然后在jsp中调用

<tr><td>课 程:<select name="course">
<%try{
ArrayList list=m.selectCourseInfo();
if(list.isEmpty()){
out.println("没有数据显示");
}
for(int i=0;i<list.size();i++){
CourseInfo c=(CourseInfo)list.get(i);%>
<option><%=c.getName()%></option>
<%}}
catch(Exception e){}
%></select>
</td></tr>
这样就可以动态的显示了

热心网友 时间:2022-04-10 12:06

有一个中间量 rs 把数据先读到 rs中 ,然后赋值给 list中的单元格 就可以了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...赵高指鹿为马、燕昭王以千金买千里骨马、田忌赛马的故事!_百度... 什么是草花? 草花是怎么用的? Rio和锐澳是一家吗 锐澳公司介绍 暧昧期间出去吃饭应该谁买单啊? 一般女方出走几天男方能起诉离婚 女生戴什么水晶手链好1992年出生的 送女生手链时怎么说才浪漫(蓝水晶),就比如像钻石是女人最好的朋友之类... 新民晚报杯足球赛市级总赛事组委会电话 男生16岁,自然卷的头发发型怎么弄? 适合16岁男生的发型 16岁男生什么发型好看一点? 16岁男生应该剪什么发型好? 一给舅公推荐个好地方这——宝龙广场为题的作文怎么写? 盐城宝龙广场有什么好玩的? 上海有哪些地方可以买到紫燕百味鸡? 哪里的紫燕百味鸡是正宗的?地址? 汇金路宝龙广场饭店有几家? 上海住院医保报销比例 乒乓球拍有吸汗带? 乒乓球拍是贴吸汗带好还是不贴好? 乒乓球柄带怎么绑 网球拍的吸汗带怎么缠? 乒乓球吸汗条怎么绑 乒乓球拍吸汗带缠法 乒乓球拍怎样绑吸汗带 乒乓拍怎样贴吸汗带? 解梦 昨晚做了一个梦,梦见一个寒冷的下雪天 怎样才能去除水壶里的水垢…? 信用度多少才能开通借呗 我的支付宝怎么没有借呗这个功能 信用分数六百多 美团订单尾号是什么 手机自带应用分身的软件微信和qq满足不了我的需求,国外的聊天软件能分身又能用的是哪些手机。华为能开 美团单号有多少位 十八岁声音会变吗? 美团手机尾号的购买时间范围 华为网络机顶盒m330可装聊天软件吗 女生满18岁了以后声音还会再变吗 18岁了,嗓音特别粗,声音怎么才能变得细一点?像平常人一样。 美团劵不见了,用手机上的订单尾号能行吗 男生18岁之后声音还会变吗 16岁时的声音和18岁时的声音有什么不一样吗? 18分贝的音量是多大 十八岁的声音和二十五岁有区别吗? 为什么我都18了声音还是有点童声…我到底换声了没… 我才18岁 可是声音已经很老了 请问能有什么办法改变声音吗?就是别让声音很老 快满18岁了为什么声音还是很沙哑? 18岁男生声音还会改变吗 有一个18岁的男生,老是要弄出各种声音,是什么原因