- 浏览: 844747 次
- 性别:
- 来自: 深圳
-
文章分类
最新评论
-
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...
在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!
前端分析-2023071100789
基于kinect的3D人体建模C++完整代码.cpp
搞机工具箱10.1.0.7z
GRU+informer时间序列预测(Python完整源码和数据),python代码,pytorch架构,适合各种时间序列直接预测。 适合小白,注释清楚,都能看懂。功能如下: 代码基于数据集划分为训练集测试集。 1.多变量输入,单变量输出/可改多输出 2.多时间步预测,单时间步预测 3.评价指标:R方 RMSE MAE MAPE,对比图 4.数据从excel/csv文件中读取,直接替换即可。 5.结果保存到文本中,可以后续处理。 代码带数据,注释清晰,直接一键运行即可,适合新手小白。
在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!
基于ANSYS LSDyna的DEM-SPH-FEM耦合模拟滑坡入水动态行为研究,基于ANSYS LSDyna的DEM-SPH-FEM耦合的滑坡入水模拟分析研究,基于ansys lsdyna的滑坡入水模拟dem-sph-fem耦合 ,基于ANSYS LSDyna; 滑坡入水模拟; DEM-SPH-FEM 耦合,基于DEM-SPH-FEM耦合的ANSYS LSDyna滑坡入水模拟
auto_gptq-0.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
复件 复件 建设工程可行性研究合同[示范文本].doc
13考试真题最近的t64.txt
好用我已经解决报错问题
# 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!
auto_gptq-0.4.2-cp38-cp38-win_amd64.whl
自动立体库设计方案.pptx
# 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!
在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!
在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!
# 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!
用deepseek变现实操流程,小白必看。