- 浏览: 850722 次
- 性别:
- 来自: 深圳
-
文章分类
最新评论
-
renzhengzhi:
请教一下楼主,公有云和私有云的开发,具体要做哪些工作呢?我拿到 ...
4,云的4 种模式 -
SangBillLee:
我用了solr5.5,用SolrQuery查询,没法高亮,不知 ...
solr5.x快速入门 -
lw900925:
这翻译读起来真是别扭。
solr in action翻译-第一章1.1 -
springjpa_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
Spring MVC性能提升 -
h416373073:
正遇到了此问题不知如何解决, 多谢分享
solr错误
利用DatabaseMetaData得到数据库中所有表的信息,利用ResultSetMetaData获取表的结构,并和表中的数据一起输出到客户端.
1, 编写GetDBInfoServlet.java
package cn.apache.pl;
import java.io.*; import java.sql.*; import java.util.ArrayList; import javax.servlet.*; import javax.servlet.http.*;
public class GetDBInfoServlet extends HttpServlet { private String url; private String user; private String password;
public void init() throws ServletException { ServletContext sc = getServletContext(); String driverClass = sc.getInitParameter("driverClass"); url = sc.getInitParameter("url"); user = sc.getInitParameter("user"); password = sc.getInitParameter("password");
try { Class.forName(driverClass); }catch(ClassNotFoundException ce) { throw new UnavailableException("数据库驱动加载失败"); } }
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException { Connection conn = null; Statement stmt = null; ResultSet rs = null;
try { conn = DriverManager.getConnection(url, user, password);
resp.setContentType("text/html; charset=gb2312"); PrintWriter out = resp.getWriter(); out.println("<html><head>"); out.println("<title>数据库表的信息</title>"); out.println("</head><body>");
//调用请求对象的getParameter()方法得到查询的表名 String tableName = req.getParameter("tableName");
//如果表名为空,则执行if块内的代码 if(null == tableName || tableName.equals("")) { //调用连接对象的getMetaData()方法得到DatabaseMetaData对象 DatabaseMetaData dbMeta = conn.getMetaData();
/* *调用DatabaseMetaData对象的getTables()得到,传递"TABLE"参数 *(代码中使用new String[]{"TABLE"})获取数据库中所有表的信息, *返回一个结果集对象 *还可以传递"VIEW",获取数据库中视图的信息 */ rs = dbMeta.getTables(null, null, null, new String[]{"TABLE"});
//输出一个表单 out.println("<form action=\"getdbinfo\" method=\"get\">");
//表单中有一个列表框 out.println("<select size=1 name=tableName>"); while(rs.next()) { //调用getString("TABLE_NAME")得到表的名字 out.println("<option value="+rs.getString("TABLE_NAME")+">"); out.println(rs.getString("TABLE_NAME")); out.println("</option>"); } out.println("</select><p>");
out.println("<input type=\"submit\" value=\"提交\">"); out.println("</form>"); }
//如果用户提交了表名参数,则执行else块 else { stmt = conn.createStatement();
//查询表中所有字段,返回结果集 rs = stmt.executeQuery("select * from "+tableName);
//调用ResultSet对象的getMetaData()方法ResultSetMetaData对象 ResultSetMetaData rsMeta = rs.getMetaData();
//调用ResultSetMetaData对象的getColumnCount()方法得到结果集中列的总数 int columnCount = rsMeta.getColumnCount();
//以表格形式输出表的结构 out.println("<table border=1>"); out.println("<caption>表的结构</caption>"); out.println("<tr><th>字段名</th><th>字段类型</th><th>最大字符宽度</th></tr>");
//构造一个ArrayList集合对象,用于存储表中字段的名字 ArrayList<String> al = new ArrayList<String>();
for(int i=1; i<=columnCount; i++) { out.println("<tr>");
//调用ResultSetMetaData对象的getColumnName()方法得到列的名字 String columnName = rsMeta.getColumnName(i);
out.println("<td>"+columnName+"</td>");
//将列的名字保存到ArrayList集合中 al.add(columnName);
/* *调用ResultSetMetaData对象的getColumnTypeName()方法得到列的 *数据库特定的类型名 和 列的最大字符宽度 */ out.println("<td>"+rsMeta.getColumnTypeName(i)+"</td>"); out.println("<td>"+rsMeta.getColumnDisplaySize(i)+"</td>"); }
out.println("</table><p>");
//以表格形式输出表中的数据 out.println("<table border=1>"); out.println("<caption>表中的数据</caption>"); out.println("<tr>");
//通过for循环取出存储在ArrayList集合中的列名,作为表格的表头 for(int i=0; i<columnCount; i++) { out.println("<th>"+al.get(i)+"</th>"); }
while(rs.next()) { out.println("<tr>"); for(int i=1; i<=columnCount; i++) { out.println("<td>"+rs.getString(i)+"</td>"); } out.println("</tr>"); } out.println("</table>"); } out.println("</body></html>"); out.close(); }catch(SQLException se) { se.printStackTrace(); }finally { if(rs != null) { try { rs.close(); }catch(SQLException se) { se.printStackTrace(); } rs = null; } if(stmt != null) { try { stmt.close(); }catch(SQLException se) { se.printStackTrace(); } stmt = null; } if(conn != null) { try { conn.close(); }catch(SQLException se) { se.printStackTrace(); } conn = null; } } } }
|
2,部署Servlet:
<!-- GetDBInfoServlet.java -->
<servlet> <servlet-name>GetDBInfoServlet</servlet-name> <servlet-class>cn.apache.pl.GetDBInfoServlet</servlet-class> </servlet>
<servlet-mapping> <servlet-name>GetDBInfoServlet</servlet-name> <url-pattern>/getdbinfo</url-pattern> </servlet-mapping>
|
3,运行GetDBInfoServlet
启动Tomact服务器,在浏览器中打开: http://localhost:8080/ch08/getdbinfo
选择account表后,点”提交”,打开
表的结构
字段名 |
字段类型 |
最大字符宽度 |
userid |
VARCHAR |
20 |
balance |
FLOAT |
6 |
表中的数据
userid |
balance |
彭磊 |
500.00 |
徐璐 |
1000.50 |
再选”bookinfo”, 点”提交”,打开
表的结构
字段名 |
字段类型 |
最大字符宽度 |
id |
INTEGER |
11 |
title |
VARCHAR |
100 |
author |
VARCHAR |
100 |
bookconcern |
VARCHAR |
200 |
publish_date |
DATE |
10 |
price |
FLOAT |
4 |
amount |
SMALLINT |
6 |
remark |
VARCHAR |
400 |
表中的数据
相关推荐
ResultSetMeta接口提供了关于结果集(即查询结果)的元数据信息,比如列的数量、列名、数据类型等。这对于动态处理查询结果非常有用,尤其是在不知道确切表结构的情况下。 #### 4. Java中的Session会话状态 Session...
内容概要:本文详细介绍了基于MATLAB/Simulink的电动助力转向系统(EPS)模型的构建及其控制方法。首先,文中阐述了EPS在提升驾驶体验和安全性方面的重要意义。接着,重点讲解了四个关键模型的搭建:整车二自由度模型用于研究车辆转向特性;助力特性曲线模型确定不同驾驶条件下助力电机提供的助力力矩;助力电机模型模拟助力电机的工作过程;齿条模型描述助力电机转矩转化为车轮转向的动作。每个模型都有具体的参数设定和代码示例。此外,文章还解释了模型的输入(如前轮转角、方向盘力矩)和输出(转向助力力矩),并指出控制方法基于各模型间的输入输出关系,利用基本数学公式和逻辑判断实现。 适用人群:汽车工程领域的研究人员、工程师和技术爱好者。 使用场景及目标:适用于希望深入了解EPS工作原理的研究人员,以及需要进行EPS系统设计和优化的工程师。目标是掌握EPS系统的建模方法和控制策略,为实际项目提供理论支持和技术指导。 其他说明:文中提供了丰富的代码片段和详细的模型介绍,有助于读者更好地理解和实践。同时强调了EPS对于提高驾驶安全性和舒适性的重要性。
实训商业源码-帝国cms7.5 7.2 UTF-8移动端同步插件-酷网站-论文模板.zip
内容概要:本文详细介绍了基于Lasso分位数回归的数据回归预测方法。首先阐述了Lasso分位数回归作为一种结合Lasso回归与分位数回归的统计方法,能够在处理变量选择和模型复杂度方面发挥重要作用。接着解释了其基本原理,即在分位数回归基础上加入Lasso正则化项,从而确保模型既能良好拟合数据,又能有效避免过拟合现象。随后讨论了具体实施流程,从数据预处理到最终预测,涵盖了特征选择、模型构建以及参数优化等多个环节。最后强调了该方法在多个行业(如金融、医疗)的实际应用场景及其潜在价值。 适合人群:对统计学、机器学习有一定了解的研究人员和技术爱好者。 使用场景及目标:适用于需要精确预测并同时考虑多维度因素影响的场合,特别是在面对高维数据时,希望通过减少冗余变量来提高预测准确性的情况。 其他说明:文中提到的方法不仅限于特定领域,而是可以在多种不同类型的预测任务中发挥作用,为决策提供科学依据。
这段代码实现了一个 三维状态的扩展卡尔曼滤波 (Extended Kalman Filter, EKF) 算法。通过生成过程噪声和观测噪声,对真实状态进行滤波估计,同时对比了滤波前后状态量的误差和误差累积分布曲线。 只有一个m文件,下载后使用MATLAB打开运行即可,带误差输出。
毕业设计-百川多公众号集字福袋 2.0.5开源-整站商业源码.zip
实训商业源码-多商家营销活动平台V1.3.9小程序前后端完整全开源解密源码-论文模板.zip
ISC大作业论文
毕业论文-在线进销存-整站商业源码.zip
毕业设计-步数宝步数换购小程序 7.8.1-整站商业源码.zip
实训商业源码-叮咚-门店会员卡小程序4.8.2开源-论文模板.zip
毕业论文-芸众圈子社区V1.7.6 开源版-整站商业源码.zip
内容概要:本文探讨了多智能体强化学习(MARL)在配电网有功电压控制中的应用。文中介绍了将电压约束转化为势垒函数的方法,并在Dec-POMDP框架下对七种最先进的MARL算法进行了大规模实验。实验表明,设计合理的电压势垒函数对于提高电压控制效果至关重要。此外,作者还建立了开源环境,旨在促进电力社区和MARL社区的合作,推动MARL算法的实际应用。 适合人群:从事电力系统自动化、智能电网研究的专业人士,以及对多智能体系统和强化学习感兴趣的科研人员。 使用场景及目标:适用于需要优化配电网电压控制的场景,特别是希望通过软件手段而非硬件升级来提升电力质量和缓解电力拥塞的情况。目标是展示MARL在电力系统中的潜力,并为后续研究提供工具和支持。 其他说明:文章不仅讨论了理论和技术细节,还包括大量代码片段,帮助读者理解和实践MARL在电压控制中的具体应用。
内容概要:本文基于PFC3D(Particle Flow Code 3D)软件,详细探讨了岩石注浆过程中的破坏现象及其背后的机理。首先介绍了注浆破坏的复杂性,指出这是由材料特性、地质构造和计算机模拟技术共同决定的。接着重点讲解了注浆速度和流量的调整方法,强调适当的速度和流量对于确保注浆效率和避免过度破坏的重要性。最后讨论了在不考虑渗流场的情况下,如何根据岩石结构特征选择最佳的注浆孔位置,以提高注浆效果并保护周围岩石结构。 适合人群:从事地质工程领域的研究人员和技术人员,尤其是那些希望深入了解岩石注浆过程的人。 使用场景及目标:适用于需要利用PFC3D进行岩石注浆模拟的研究项目,旨在帮助用户掌握注浆速度、流量调节技巧以及合理的注浆孔位选择方法。 其他说明:文中提供了简单的PFC3D模拟代码框架,便于读者快速上手实践。同时提醒读者注意实际操作时应结合实验室理论模型和现场具体情况来进行参数优化。
内容概要:本文详细介绍了IEEE标准节点仿真模型系列,涵盖了从简单到复杂的多个节点配置,如2机5节点、6节点、3机9节点、13节点、5机14节点、15节点、30节点、33节点、34节点、10机39节点以及69节点。所有模型均已成功调试并实现了潮流计算,适用于短路仿真、稳定性研究和电能质量研究等领域。文中还特别强调了三相等效电源的应用,这是模拟真实电力系统的关键要素之一。 适合人群:从事电力系统研究、仿真和优化的专业人士和技术人员。 使用场景及目标:①用于电力系统短路仿真的建模与分析;②评估电力系统的稳定性和可靠性;③研究电能质量问题,提升电力设备的运行效率和寿命。 阅读建议:本文提供了丰富的背景知识和具体应用场景,建议读者结合实际项目需求选择合适的模型进行深入研究和应用。
实训商业源码-【超人】积分商城 5.2.26-论文模板.zip
实训商业源码-思创兼职小程序V6.7.6 开源版-论文模板.zip
2025年手绘风格毕业设计答辩模板范文
内容概要:本文档详细介绍了使用C语言实现常用的数据结构和算法。首先阐述了算法与数据结构的重要性,并具体讲解了链表、栈、队列、二叉树、图等数据结构的实现方法及其操作函数。接着深入探讨了快速排序和二分查找这两种高效的排序与查找算法,提供了完整的代码示例并解释了每个部分的作用。最后还讨论了图结构的深度优先搜索(DFS)和广度优先搜索(BFS)遍历算法,强调了内存管理和防御性编程的重要性。所有代码示例均可直接编译运行,建议在Linux环境下使用gcc编译测试。 适合人群:具备一定编程基础,尤其是熟悉C语言的初学者或有一定经验的研发人员。 使用场景及目标:①帮助读者理解并掌握常见的数据结构(如链表、栈、队列、二叉树、图)及其基本操作;②通过实际编码练习提高读者对经典算法(如快速排序、二分查找)的理解;③培养良好的编程习惯,如内存管理和防御性编程。 阅读建议:由于文档包含大量代码片段和详细的实现步骤,读者应边阅读边动手实践,尝试编译和运行提供的代码示例,同时注意理解每段代码背后的逻辑和设计思想。此外,建议读者关注文档中提到的编程规范和最佳实践,以提升自身的编程技能。
毕业论文-源导航V1.0-整站商业源码.zip