import java.sql.*;
public class EnuResultSet {
public static void main(String[] args) throws Exception {
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String user = "scott";
String pass = "123";
//
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, pass);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from dept");
ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
// 输出列名
for (int i=1; i<=columnCount; i++){
System.out.print(rsmd.getColumnName(i));
System.out.print("(" + rsmd.getColumnTypeName(i) + ")");
System.out.print(" | ");
}
System.out.println();
// 输出数据
while (rs.next()){
for (int i=1; i<=columnCount; i++){
System.out.print(rs.getString(i) + " | ");
}
System.out.println();
}
rs.close();
stmt.close();
conn.close();
}
}
但如果是任意一个返回的结果集,比如数据库元数据DatabaseMedata中的多个方法返回的都是ResultSet对象,如:getAttributes() ,getBestRowIdentifier() ,getTypeInfo()等方法,这时如何遍历这个对象的每一列,上面的方法就处理不了了?
我已解决:
import java.sql.*;
public class TestMetaData {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
ResultSetMetaData rm;
DatabaseMetaData dmd;
int n=1;
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url,"scott","123");
dmd = conn.getMetaData();
if(dmd == null){
System.out.println("no Meta avaliable.");
}else{
System.out.println("Database Name:"+dmd.getDatabaseProductName());
System.out.println("Database Version:"+ dmd.getDatabaseProductVersion());
System.out.println("Database Driver:"+ dmd.getDriverName());
System.out.println("Database DriverVerion:"+ dmd.getDriverVersion());
System.out.println("Database DataBase TypeList:");
rs = dmd.getTypeInfo();
rs.next();
for(int i=1;i <=n;i++){
if(rs.getString(i)!=null){
n+=1;}
}
while(rs.next()){
for (int i1=1;i1<n;i1++){
System.out.print("\t" + rs.getString(i1)+"\t");
}
System.out.println();
}
rs.close();
}
stmt = conn.createStatement();
String sql = "select * from dept";
rs = stmt.executeQuery(sql);
System.out.println("The data table structure info:");
rm = rs.getMetaData();
int columnNum = rm.getColumnCount();
System.out.println("Num \tcolumnName \tDataType");
for (int i=1;i<=columnNum;i++){
System.out.println(i+"\t"+rm.getColumnName(i)+"\t"+rm.getColumnTypeName(i));
}
}catch (Exception e){
e.printStackTrace();
}finally{
CloseConn.closeConnEtc(rs,conn,stmt);
}
}
}
分享到:
相关推荐
要将ResultSet转换为XML,我们需要遍历ResultSet,为每一行创建一个XML元素,并将列名作为元素标签,值作为元素内容。 以下是一种简单的实现方式: 1. 创建一个XML Document对象,这是XML文档的基础。 2. 使用...
在遍历ResultSet结果集的过程中,可以为每一行创建一个标签,并将每一列数据包裹在标签中,形成完整的HTML表格结构,从而将数据显示在网页上。 综上所述,JSP页面通过与JDBC的结合,可以访问和操作数据库中的数据。...
- `.previous`,`.previous_siblings`:向左遍历同级元素。 6. **搜索策略**: - 使用标签名、属性名和属性值进行精确匹配。 - 使用正则表达式进行复杂匹配。 - 使用字符串方法(如`contains()`,`startswith()...
- 数据库查询结果通常以ResultSet形式返回,需要遍历ResultSet并将其转换为Java对象。 6. 页面展示: - 转换后的数据可能需要在网页上显示,这可能涉及到JSP、Thymeleaf或其他模板引擎。 - 使用ModelAndView或...
next() 方法在 ResultSet 对象没有一行记录时返回 false,因此可以在 while 循环中使用它来遍历结果集,也可以利用该方法判断结果集是否为空。 getRow() 方法是 ResultSet 对象的一个重要方法,它可以返回当前指针...
4. **处理结果集**:遍历ResultSet,获取每一行数据。 5. **生成XML文档**:使用Java的DOM(Document Object Model)、SAX(Simple API for XML)或StAX(Streaming API for XML)等解析器,创建XML文档结构。每条...
5. 将结果集转换为XML:遍历ResultSet,将每一行数据转换为XML元素,并嵌套在合适的结构中。 “xml文件自动生成工具”可能还涉及到数据映射的过程,即将数据库表结构映射到XML文档的结构。这可能包括选择哪些字段...
5. 处理结果集:遍历ResultSet,获取每一行数据。 描述中提到的是“某一特定表格”,这意味着我们需要明确知道要查询的表名和可能的条件。例如,我们可能有一个名为"Employee"的表,包含"ID","Name"和"Position"等...
4. **处理结果**:遍历ResultSet,提取数据并进行业务处理。 5. **关闭资源**:在完成数据库操作后,记得关闭ResultSet、Statement和Connection,释放系统资源。 在开发中,为了确保最佳性能,通常会使用连接池技术...
开发者需要遍历ResultSet,将数据绑定到JSP页面的HTML元素中。 6. **事务管理**:在涉及多条SQL语句的操作中,事务管理至关重要。JSP可以通过Java的JDBC API实现事务的开始、提交和回滚。 7. **连接池**:为了提高...
当获取到菜单数据后,JSP使用逻辑控制结构(如for-each循环)遍历ResultSet,生成HTML代码来展示一级菜单。对于每个一级菜单,再根据其对应的二级菜单ID,进行一次子查询,得到二级菜单的信息。然后在一级菜单下插入...
3. JSTL标签:例如,遍历ResultSet,将每条图书数据渲染到页面上;元素配合JSTL的提交标签(如、等)实现用户交互,如添加新书、删除旧书、修改已有书籍信息。 在项目实施过程中,开发者还会涉及MVC(Model-View-...
3. 数据转换:`writeXML`方法接收ResultSet作为参数,遍历其中每一行数据,并将其转换为XML元素。每行数据可能对应一个XML元素,元素的属性可能来源于结果集中列的值。 4. 内容编码:为了保持数据的可读性和兼容性,...
遍历ResultSet,提取每一行的列值,这些值可以用于构建HTML表格或其他显示格式。 5. **JSP标签库**:在JSP中,可以使用JSTL(JavaServer Pages Standard Tag Library)来简化数据库操作。例如,`<sql:query>`标签...
对于查询结果,开发者需要遍历ResultSet,逐行逐字段地提取数据并封装到Java对象中,过程繁琐且容易出错。 2. **iBatis**:作为半自动化的ORM框架,iBatis允许开发者编写SQL语句,但在数据操作层面提供了便利,比如...
5. **处理结果集**:遍历ResultSet,将其转换为合适的对象(如自定义的JavaBean),并存储到一个列表中。 6. **在JSP中展示数据**:在JSP页面上,使用JSP标签库(如JSTL)或脚本元素遍历列表,将数据渲染到HTML中。...
- 处理结果集:如果执行的是查询语句,会返回ResultSet对象,遍历ResultSet以获取数据。 - 关闭资源:执行完操作后,务必关闭ResultSet、Statement和Connection,释放资源。 3. JSP中的数据库操作: - 在JSP中...
5. 遍历ResultSet并处理数据。 6. 关闭连接和其他资源。 项目中的"mywebapp"可能是一个完整的Web应用程序结构,包含以下几个部分: - `WEB-INF` 文件夹:存放Web应用的配置文件,如`web.xml`,以及编译后的Servlet...
你需要遍历ResultSet,读取每一行数据并进行处理,可能需要转化为自定义的Java对象。 6. **异常处理**:在数据库操作中,可能出现各种异常,如网络问题、权限问题、SQL语法错误等。因此,编写健壮的异常处理代码至...