JDBC从数据库中取值 我有个表,表是动态创建的(通过JDBC的SQL语句创建),所以没有对应的实体类来封装数据,要通过什么样的方式才能从数据库中取出数据,然后显示在JSP中。我纠结好久了,我想要实现的代码,先谢过了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你通过jdbc创建表都行,那就通过jdbc来读取呗,select * from mytable;用list来封装,ResultSetMetaData得到表的字段。setListResult(new ArrayList<Map>());try { conn = getConnection(); try { pstmt = conn.prepareStatement(sql); } catch (SQLException se) { throw new Exception("..."); } Iterator inputParamsIte = params.iterator(); int index = 1; try { while (inputParamsIte.hasNext()) { pstmt.setObject(index, inputParamsIte.next()); index++; } } catch (SQLException se) { throw new Exception("..."); } try { rs = pstmt.executeQuery(); ResultSetMetaData rsmd = rs.getMetaData(); while (rs.next()) { Map map = new HashMap(); for (int i = 1; i <= rsmd.getColumnCount(); i++) { if (rsmd.getColumnTypeName(i).equals("text")) { StringBuffer sbf = new StringBuffer(); java.io.InputStream ins = rs.getAsciiStream(i); int ch = 0; if (ins != null) { try { while ((ch = ins.read()) != -1) { sbf.append((char) ch); } ins.close(); map.put(rsmd.getColumnName(i), new String(sbf.toString().getBytes("8859_1"), "GB2312")); } catch (IOException ioe) { throw new Exception("..."); } } else { map.put(rsmd.getColumnName(i), null); } }else{ map.put(rsmd.getColumnName(i), rs.getObject(i)); } } getListResult().add(map); } } catch (SQLException se) { throw new Exception("..."); } iResult = getListResult().size(); logger.debug("executeQuery:" + sql + ",successe.");} finally { closeConnection();} 不需要实体类 直接用SQL查询 然后自己将查询出的object 对象封装成VO 就行了 类型一个单表向导,和表里有哪些字段无关的.很多公司的框架里,有通过数据库的任何一个表,动态把字段读出来,然后配置一下,就能在JSP页面上显示相应的数据.楼主的需求应该是类型于这个. 表的话你建立一个实体类就ok,写下属性。再写set和get方法。就ok了。我这里这张表是学生表,字段是StudNo,StudName,StudSex,ClassID,对应的实体类如下:package com.studinfoms.util;import java.util.Date;public class StudInfo {private String StudName;private String StudSex;private Date StudBirthDay;private String StudNo;private String ClassID;public String getStudName() { return StudName;}public void setStudName(String studName) { StudName = studName;}public String getStudSex() { return StudSex;}public void setStudSex(String studSex) { StudSex = studSex;}public Date getStudBirthDay() { return StudBirthDay;}public void setStudBirthDay(Date studBirthDay) { StudBirthDay = studBirthDay;}public String getStudNo() { return StudNo;}public void setStudNo(String studNo) { StudNo = studNo;}public String getClassID() { return ClassID;}public void setClassID(String classID) { ClassID = classID;}}下面是jdbc的实现:public ArrayList<StudInfo> selectStudInfo(String keyword,String search){ String drv="com.microsoft.sqlserver.jdbc.SQLServerDriver"; String url="jdbc:sqlserver://localhost:1433;DatabaseName=test"; String usr="sa"; String password="dongxiaolong1202"; Connection conn=null; Statement stm=null; ResultSet rs=null; ArrayList<StudInfo> list=new ArrayList<StudInfo>(); try { Class.forName(drv).newInstance(); conn=DriverManager.getConnection(url,usr,password); System.out.println("数据库连接成功!"); String sqlstr="select * from StudInfo where "+keyword+" like '%"+search+"%'"; System.out.println(sqlstr); stm=conn.createStatement(); rs=stm.executeQuery(sqlstr); while(rs.next()) { StudInfo stud=new StudInfo(); stud.setStudName(rs.getString("StudName")); stud.setStudNo(rs.getString("StudNo")); stud.setStudSex(rs.getString("StudSex")); list.add(stud); } } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return list;}在servlet中调用方法实现传到jsp中public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("doPost"); request.setCharacterEncoding("utf-8"); String keyword=request.getParameter("keyword"); String search=request.getParameter("search"); ArrayList<StudInfo> list=selectStudInfo(keyword, search); Iterator<StudInfo> iterator=c.iterator(); while(iterator.hasNext()){ StudInfo stud=new StudInfo(); stud=(StudInfo)iterator.next(); System.out.println("-------------------------------------------------------------------------------"); System.out.println("学生学号"+stud.getStudNo()); System.out.println("学生姓名"+stud.getStudName()); System.out.println("学生性别"+stud.getStudSex()); System.out.println("......................................................................."); }response.sendRedirect("/studinfoms/selectstudinfook.jsp");//转下jsp页面!}如果你满意请记得给我分数哇!不懂你再说。 6楼的好像不怎么对吧,他这个表是用jdbc的sql语句创建的,可能未必知道这么多信息的。难道你的意思是,创建了这么一个实体bean来备用?如果是这样子的话,那可能是行的。就是换个位子思考下,你就当你的那张用sql语句创建的表是一张虚拟的表,就是当某个时候这张表存在的时候,就可以使用这个实体bean了。其实,说白了就一句话,这个用sql语句创建的表,到时候也是会存在于数据库中的,你可以创建一个实体的bean来备用。 1 楼那个方式可以,你可以用界面显示信息的索引来做map的key 给个简单的例子你看一下估计就懂了:<%@ page language="java" import="java.sql.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>进厂煤计量盈亏月报</title> <% Connection conn = null; Statement stat = null; ResultSet rs = null; String sql = ""; try { Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url = "jdbc:oracle:thin:@211.69.205.29:1521:HCDC"; String user = "system"; String password = "manager"; sql = "select ghbh,gmdw,gmkb,fz,hm,zldw from hc_ghjld where ghbh like '"+"201012%"+"'"; conn = DriverManager.getConnection(url, user, password); stat = conn.createStatement(); rs = stat.executeQuery(sql); } catch (Exception ex) { ex.printStackTrace(); out.print("查询数据库出错!"); } %> </head> <style type="text/css">body { color: #4f6b72; background: #E6EAE9;}tr { background-color: #FFFFFF;}td { font-size: 12px; text-align: center; color: #4f6b72; border-right: 1px solid #C1DAD7; border-bottom: 1px solid #C1DAD7; padding: 4px 4px 4px 4px;}</style> <body> <table id="tableTest" border="0" cellspacing="1" width="400"> <!--<!--表格标题行--> <tr> <td rowspan="2" width="100"> 矿别 </td> <td rowspan="2" width="100"> 供煤单位 </td> <td rowspan="2" width="100"> 发站 </td> <td colspan="4" width="320"> 货名 </td> <td rowspan="2" width="100"> 重量单位 </td> </tr> <% try { while (rs.next()) { out.print("<tr><td>" + rs.getString("ghbh")+ "</td>"); out.print("<td>" + rs.getString("gmdw") + "</td>"); out.print("<td>" + rs.getString("gmkb") + "</td>"); out.print("<td>" + rs.getString("fz") + "</td>"); out.print("<td>" + rs.getString("hm") + "</td>"); out.print("<td>" + rs.getString("zldw") + "</td></tr>"); } } catch (SQLException ex) { ex.printStackTrace(); out.print("生成表格出错!"); } %> </table> </body></html> 主要是看下面的红色部分:<%@ page language="java" import="java.sql.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>进厂煤计量盈亏月报</title> <% Connection conn = null; Statement stat = null; ResultSet rs = null; String sql = ""; try { Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url = "jdbc:oracle:thin:@211.69.205.29:1521:HCDC"; String user = "system"; String password = "manager"; sql = "select ghbh,gmdw,gmkb,fz,hm,zldw from hc_ghjld where ghbh like '"+"201012%"+"'"; conn = DriverManager.getConnection(url, user, password); stat = conn.createStatement(); rs = stat.executeQuery(sql); } catch (Exception ex) { ex.printStackTrace(); out.print("查询数据库出错!"); } %> </head> <style type="text/css">body { color: #4f6b72; background: #E6EAE9;}tr { background-color: #FFFFFF;}td { font-size: 12px; text-align: center; color: #4f6b72; border-right: 1px solid #C1DAD7; border-bottom: 1px solid #C1DAD7; padding: 4px 4px 4px 4px;}</style> <body> <table id="tableTest" border="0" cellspacing="1" width="400"> <!--<!--表格标题行--> <tr> <td rowspan="2" width="100"> 矿别 </td> <td rowspan="2" width="100"> 供煤单位 </td> <td rowspan="2" width="100"> 发站 </td> <td colspan="4" width="320"> 货名 </td> <td rowspan="2" width="100"> 重量单位 </td> </tr> <% try { while (rs.next()) { out.print("<tr><td>" + rs.getString("ghbh") + "</td>"); out.print("<td>" + rs.getString("gmdw") + "</td>"); out.print("<td>" + rs.getString("gmkb") + "</td>"); out.print("<td>" + rs.getString("fz") + "</td>"); out.print("<td>" + rs.getString("hm") + "</td>"); out.print("<td>" + rs.getString("zldw") + "</td></tr>"); } } catch (SQLException ex) { ex.printStackTrace(); out.print("生成表格出错!"); } %> </table> </body></html> jsp在线即时聊天,请大牛和前辈指点一下啊! 请教两个菜鸟问题~~~ 请问JSP实现添加功能 求助:关于strtus中form的问题,和消息文件问题。。 提问:“无状态”是个什么样的概念? KILL JAVA线程,linux 死机,系统日志我贴出来,帮我看看 关于可维护树的实现 jsp中写的js脚本传值给servlet,在servlet中显示为NULL 把Tomcat 4.1.27换成4.1.30启动出错,请大哥们帮帮我 基于SSM框架的酒店管理系统怎么写改变房态的代码?怎么获得房价总费用? Struts2 流下载有问题,大侠们请出手相助 点击按钮添加/删除一行表格
try {
conn = getConnection();
try {
pstmt = conn.prepareStatement(sql);
} catch (SQLException se) {
throw new Exception("...");
}
Iterator inputParamsIte = params.iterator();
int index = 1;
try {
while (inputParamsIte.hasNext()) {
pstmt.setObject(index, inputParamsIte.next());
index++;
}
} catch (SQLException se) {
throw new Exception("...");
} try {
rs = pstmt.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
while (rs.next()) {
Map map = new HashMap();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
if (rsmd.getColumnTypeName(i).equals("text")) {
StringBuffer sbf = new StringBuffer();
java.io.InputStream ins = rs.getAsciiStream(i);
int ch = 0;
if (ins != null) {
try {
while ((ch = ins.read()) != -1) {
sbf.append((char) ch);
}
ins.close();
map.put(rsmd.getColumnName(i), new String(sbf.toString().getBytes("8859_1"), "GB2312"));
} catch (IOException ioe) {
throw new Exception("...");
}
} else {
map.put(rsmd.getColumnName(i), null);
}
}else{
map.put(rsmd.getColumnName(i), rs.getObject(i));
}
}
getListResult().add(map);
}
} catch (SQLException se) {
throw new Exception("...");
}
iResult = getListResult().size();
logger.debug("executeQuery:" + sql + ",successe.");
} finally {
closeConnection();
}
很多公司的框架里,有通过数据库的任何一个表,动态把字段读出来,然后配置一下,就能在JSP页面上显示相应的数据.
楼主的需求应该是类型于这个.
private String StudName;
private String StudSex;
private Date StudBirthDay;
private String StudNo;
private String ClassID;
public String getStudName() {
return StudName;
}
public void setStudName(String studName) {
StudName = studName;
}
public String getStudSex() {
return StudSex;
}
public void setStudSex(String studSex) {
StudSex = studSex;
}
public Date getStudBirthDay() {
return StudBirthDay;
}
public void setStudBirthDay(Date studBirthDay) {
StudBirthDay = studBirthDay;
}
public String getStudNo() {
return StudNo;
}
public void setStudNo(String studNo) {
StudNo = studNo;
}
public String getClassID() {
return ClassID;
}
public void setClassID(String classID) {
ClassID = classID;
}
}
下面是jdbc的实现:
public ArrayList<StudInfo> selectStudInfo(String keyword,String search){
String drv="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url="jdbc:sqlserver://localhost:1433;DatabaseName=test";
String usr="sa";
String password="dongxiaolong1202";
Connection conn=null;
Statement stm=null;
ResultSet rs=null;
ArrayList<StudInfo> list=new ArrayList<StudInfo>();
try {
Class.forName(drv).newInstance();
conn=DriverManager.getConnection(url,usr,password);
System.out.println("数据库连接成功!");
String sqlstr="select * from StudInfo where "+keyword+" like '%"+search+"%'";
System.out.println(sqlstr);
stm=conn.createStatement();
rs=stm.executeQuery(sqlstr);
while(rs.next())
{
StudInfo stud=new StudInfo();
stud.setStudName(rs.getString("StudName"));
stud.setStudNo(rs.getString("StudNo"));
stud.setStudSex(rs.getString("StudSex"));
list.add(stud);
}
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
在servlet中调用方法实现传到jsp中
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("doPost");
request.setCharacterEncoding("utf-8");
String keyword=request.getParameter("keyword");
String search=request.getParameter("search");
ArrayList<StudInfo> list=selectStudInfo(keyword, search);
Iterator<StudInfo> iterator=c.iterator();
while(iterator.hasNext()){
StudInfo stud=new StudInfo();
stud=(StudInfo)iterator.next();
System.out.println("-------------------------------------------------------------------------------");
System.out.println("学生学号"+stud.getStudNo());
System.out.println("学生姓名"+stud.getStudName());
System.out.println("学生性别"+stud.getStudSex());
System.out.println(".......................................................................");
}
response.sendRedirect("/studinfoms/selectstudinfook.jsp");//转下jsp页面!
}
如果你满意请记得给我分数哇!不懂你再说。
<%@ page language="java" import="java.sql.*"
contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1">
<title>进厂煤计量盈亏月报</title> <%
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
String sql = "";
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url = "jdbc:oracle:thin:@211.69.205.29:1521:HCDC";
String user = "system";
String password = "manager";
sql = "select ghbh,gmdw,gmkb,fz,hm,zldw from hc_ghjld where ghbh like '"+"201012%"+"'";
conn = DriverManager.getConnection(url, user, password);
stat = conn.createStatement();
rs = stat.executeQuery(sql);
} catch (Exception ex) {
ex.printStackTrace();
out.print("查询数据库出错!");
}
%> </head>
<style type="text/css">
body {
color: #4f6b72;
background: #E6EAE9;
}tr {
background-color: #FFFFFF;
}td {
font-size: 12px;
text-align: center;
color: #4f6b72;
border-right: 1px solid #C1DAD7;
border-bottom: 1px solid #C1DAD7;
padding: 4px 4px 4px 4px;
}
</style>
<body> <table id="tableTest" border="0" cellspacing="1" width="400">
<!--<!--表格标题行--> <tr>
<td rowspan="2" width="100">
矿别
</td>
<td rowspan="2" width="100">
供煤单位
</td>
<td rowspan="2" width="100">
发站
</td>
<td colspan="4" width="320">
货名
</td>
<td rowspan="2" width="100">
重量单位
</td>
</tr>
<%
try {
while (rs.next()) {
out.print("<tr><td>" + rs.getString("ghbh")+ "</td>");
out.print("<td>" + rs.getString("gmdw") + "</td>");
out.print("<td>" + rs.getString("gmkb") + "</td>");
out.print("<td>" + rs.getString("fz") + "</td>");
out.print("<td>" + rs.getString("hm") + "</td>");
out.print("<td>" + rs.getString("zldw")
+ "</td></tr>");
}
} catch (SQLException ex) {
ex.printStackTrace();
out.print("生成表格出错!");
}
%>
</table> </body>
</html>
<%@ page language="java" import="java.sql.*"
contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-1">
<title>进厂煤计量盈亏月报</title> <%
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
String sql = "";
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url = "jdbc:oracle:thin:@211.69.205.29:1521:HCDC";
String user = "system";
String password = "manager";
sql = "select ghbh,gmdw,gmkb,fz,hm,zldw from hc_ghjld where ghbh like '"+"201012%"+"'";
conn = DriverManager.getConnection(url, user, password);
stat = conn.createStatement();
rs = stat.executeQuery(sql);
} catch (Exception ex) {
ex.printStackTrace();
out.print("查询数据库出错!");
} %> </head>
<style type="text/css">
body {
color: #4f6b72;
background: #E6EAE9;
}tr {
background-color: #FFFFFF;
}td {
font-size: 12px;
text-align: center;
color: #4f6b72;
border-right: 1px solid #C1DAD7;
border-bottom: 1px solid #C1DAD7;
padding: 4px 4px 4px 4px;
}
</style>
<body> <table id="tableTest" border="0" cellspacing="1" width="400">
<!--<!--表格标题行--> <tr>
<td rowspan="2" width="100">
矿别
</td>
<td rowspan="2" width="100">
供煤单位
</td>
<td rowspan="2" width="100">
发站
</td>
<td colspan="4" width="320">
货名
</td>
<td rowspan="2" width="100">
重量单位
</td>
</tr>
<%
try {
while (rs.next()) {
out.print("<tr><td>" + rs.getString("ghbh")
+ "</td>");
out.print("<td>" + rs.getString("gmdw") + "</td>");
out.print("<td>" + rs.getString("gmkb") + "</td>");
out.print("<td>" + rs.getString("fz") + "</td>");
out.print("<td>" + rs.getString("hm") + "</td>");
out.print("<td>" + rs.getString("zldw")
+ "</td></tr>");
}
} catch (SQLException ex) {
ex.printStackTrace();
out.print("生成表格出错!");
} %>
</table> </body>
</html>