- 浏览: 840024 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
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 |
表中的数据
相关推荐
2000-2021年中国科技统计年鉴(分省年度)面板数据集-最新更新.zip
PPT保护工具PDFeditor专业版-精心整理.zip
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
考研英语真题及详解-精心整理.zip
Jupyter-Notebook
全国电子地图行政区划道路水系数据-最新shp.zip
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
地级市进出口贸易及外资利用数据(297城)-最新.zip
HengCe-18900-2024-2030中国皮革制品市场现状研究分析与发展前景预测报告-样本.docx
猪脚饭超好吃 java制作的小游戏,作为巩固java知识之用.zip
【基于Python的大麦网自动抢票工具的设计与实现】 随着互联网技术的发展,网络购票已经成为人们生活中不可或缺的一部分。尤其是在文化娱乐领域,如音乐会、演唱会、戏剧等活动中,热门演出的门票往往在开售后瞬间就被抢购一空。为了解决这个问题,本论文探讨了一种基于Python的自动抢票工具的设计与实现,旨在提高购票的成功率,减轻用户手动抢票的压力。 Python作为一种高级编程语言,因其简洁明了的语法和丰富的第三方库,成为了开发自动化工具的理想选择。Python的特性使得开发过程高效且易于维护。本论文深入介绍了Python语言的基础知识,包括数据类型、控制结构、函数以及模块化编程思想,这些都是构建抢票工具的基础。 自动化工具在现代社会中广泛应用,尤其在网络爬虫、自动化测试等领域。在抢票工具的设计中,主要利用了自动化工具的模拟用户行为、数据解析和定时任务等功能。本论文详细阐述了如何使用Python中的Selenium库来模拟浏览器操作,通过识别网页元素、触发事件,实现对大麦网购票流程的自动化控制。同时,还讨论了BeautifulSoup和requests库在抓取和解析网页数据中的应用。 大麦网作为国内知名的票务平台,其网站结构和购票流程对于抢票工具的实现至关重要。论文中介绍了大麦网的基本情况,包括其业务模式、用户界面特点以及购票流程,为工具的设计提供了实际背景。 在系统需求分析部分,功能需求主要集中在自动登录、监控余票、自动下单和异常处理等方面。抢票工具需要能够自动填充用户信息,实时监控目标演出的票务状态,并在有票时立即下单。此外,为了应对可能出现的网络延迟或服务器错误,工具还需要具备一定的错误恢复能力。性能需求则关注工具的响应速度和稳定性,要求在大量用户同时使用时仍能保持高效运行。 在系统设计阶段,论文详细描述了整体架构,包括前端用户界面、后端逻辑处理以及与大麦网交互的部分。在实现过程中,采用了多线程技术以提高并发性,确保在抢票关键环节的快速响应。此外,还引入了异常处理机制,以应对网络故障或程序错误。 测试与优化是确保抢票工具质量的关键步骤。论文中提到了不同场景下的测试策略,如压力测试、功能测试和性能测试,以验证工具的有效性和稳定性。同时,通过对抢票算法的不断优化,提高工具的成功率。 论文讨论了该工具可能带来的社会影响,包括对消费者体验的改善、对黄牛现象的抑制以及可能引发的公平性问题。此外,还提出了未来的研究方向,如增加多平台支持、优化抢票策略以及考虑云服务的集成,以进一步提升抢票工具的实用性。 本论文全面介绍了基于Python的大麦网自动抢票工具的设计与实现,从理论到实践,从需求分析到系统优化,为读者提供了一个完整的开发案例,对于学习Python编程、自动化工具设计以及理解网络购票市场的运作具有重要的参考价值。
校园驿站全天候辅助取货管理系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
1970年至2010年美国所有乳制品的供应和利用情况
java基础 java_leetcode题解之Possible Bipartition.java
该开源项目为阿里巴巴数据库事业部精心打造的druid连接池设计源码,包含4689个文件,涵盖4069个Java源文件、297个SQL脚本、102个文本文件以及其他多种文件类型。druid连接池以其独特的监控功能,旨在为数据库连接管理提供高效、可靠的解决方案。项目文件类型丰富,包括HTML、JavaScript、CSS和Shell脚本等,适用于多种开发需求。
Jupyter-Notebook
金融风险管理计算手册(CoVaR)最新版.zip
网上选课系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
Jupyter-Notebook