通用查询

本节的目的是编写一个类,只要用户将数据库名、SQL语句传递给该类对象,那么该对象就用一个二维数组返回查询的记录。

编写通用查询,需要知道数据库表的列(字段)的名字,特别是表的列数(字段的个数),那么一个简单常用的办法是使用返回到程序中的结果集来获取相关的信息。

程序中的结果集ResultSet对象rs调用getMetaData()方法返回一个ResultSetMetaData对象(结果集的元数据对象):

ResultSetMetaData metaData = rs.getMetaData();

然后ResultSetMetaData对象,例如metaData,调用getColumnCount()方法就可以返回结果集rs中的列的数目:

int columnCount = metaData.getColumnCount();

ResultSetMetaData对象,例如metaData,调用getColumnName(int i)方法就可以返回结果集rs中的第i列的名字:

String columnName = metaData.getColumnName(i);

例子6将数据库名以及SQL语句传递给Query类的对象,用表格(JTable组件)显示查询到的记录,程序代码如下所示:

import javax.swing.*;public class Example6 {  public static void main(String[] args) {    String [] tableHead;    String [][] content;    JTable table ;    JFrame win= new JFrame();    Query findRecord = new Query();    findRecord.setDatabaseName("students");    findRecord.setSQL("select * from mess");    content = findRecord.getRecord();         //返回二维数组,即查询的全部记录    tableHead=findRecord.getColumnName();     //返回全部字段(列)名    table = new JTable(content,tableHead);    win.add(new JScrollPane(table));    win.setBounds(12,100,400,200);    win.setVisible(true);     win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  }}
import java.sql.*;public class Query {  String databaseName=""; //数据库名  String SQL;             //SQL语句  String [] columnName;   //全部字段(列)名  String [][] record;     //查询到的记录  public Query() {    try {      Class.forName ("com.mysql.jdbc.Driver"); //加载 JDBC-MySQL驱动    }    catch(Exception e) {}  }  public void setDatabaseName(String s) {    databaseName=s.trim();  }  public void setSQL(String SQL) {    this.SQL = SQL.trim();  }  public String[] getColumnName() {    if(columnName ==null) {      System.out.println("先查询记录");      return null;    }    return columnName;  }  public String[][] getRecord() {    startQuery();    return record;  }  private void startQuery() {    Connection con;    Statement sql;    ResultSet rs;    String uri = "jdbc:mysql://localhost:3306/"+databaseName+           "?useSSL=true&characterEncoding=utf-8";    try {      con = DriverManager.getConnection(uri,"root","");      sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);      rs = sql.executeQuery(SQL);      ResultSetMetaData metaData = rs.getMetaData();      int columnCount = metaData.getColumnCount();  //字段数目      columnName = new String[columnCount];      for(int i=1; i<=columnCount; i++) {        columnName[i-1] = metaData.getColumnName(i);      }      rs.last();      int recordAmount = rs.getRow();               //结果集中的记录数目      record = new String[recordAmount][columnCount];      int i=0;      rs.beforeFirst();      while(rs.next()) {        for(int j=1;j<=columnCount;j++) {          record[i][j-1]=rs.getString(j);       //第i条记录放入二维数组的第i行        }        i++;      }      con.close();    }    catch(SQLException e) {      System.out.println("请输入正确的表名"+e);    }  }}

程序运行效果如图所示。

thymeleaf rs 查询结果_第十一章 JDBC与MySQL数据库(10)——通用查询相关推荐

  1. mysql插入10万测试_[原创]java使用JDBC向MySQL数据库批次插入10W条数据测试效率

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢? 在JDBC编程接口中Statement 有两个方法特别值得注意: 通过使用addBatc ...

  2. java语言仅支持单重继承_java语言程序设计基础篇习题_复习题_第十一章

    java语言程序设计基础篇习题_复习题_第十一章 11.1 下面说法是真是假?一个子类是父类的子集. 11.2 使用什么关键字来定义一个子类 11.3 什么是单一继承?什么是多重继承?java支持多重 ...

  3. java程序设计基础_陈国君版第五版_第十一章例题

    java程序设计基础_陈国君版第五版_第十一章习题 class MyThread extends Thread { private String who;public MyThread(String ...

  4. java程序设计基础_陈国君版第五版_第十一章习题

    java程序设计基础_陈国君版第五版_第十一章习题 /*** 题目:假设某家银行可接受顾客的汇款,每进行一次汇款,便可计算出汇款的总额.现有两名顾客,每人分三次,每次一百元将钱汇入.试编程来模拟顾客的 ...

  5. mysql分页查询出租房屋信息_分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)...

    分页查询信息 使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目时一个简单的运用eclipse ...

  6. jaba窗体连接mysql增删改查_知识实现——Java使用jdbc连接MySql数据库,实现增删改查...

    Java使用jdbc连接MySql数据库,实现增删改查 首先,导入MySql连接数据库的jar包,我用的是 mysql连接jar包 DB类,用于获得数据库连接 import java.sql.Driv ...

  7. java JDBC连接MySQL数据库调用存储过程进行查询

    java JDBC连接MySQL数据库调用存储过程进行查询 主程序代码 工具类 文件信息 存储过程 结果截图 主程序代码 package Mysql;import util.JDBCUtils; im ...

  8. jdbc连接云数据库mysql数据库_如何通过JDBC连接MySQL数据库

    通过JDBC连接MySQL数据库,代码中的JDBC链接格式如下: jdbc:mysql://:/?sslmode=verify-full&sslrootcert= 表1参数说明参数 说明 如果 ...

  9. java计算机毕业设计web硕士研究生招生考试专业报考查询及学习系统设计与实现源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计web硕士研究生招生考试专业报考查询及学习系统设计与实现源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计web硕士研究生招生考试专业报考查询及学习系统设计与实 ...

最新文章

  1. android核心机制之Zygote启动流程
  2. Silverlight 5.0 之前的SaveFileDialog的FilterIndex 错误
  3. linux用c++调用动态库
  4. python @修饰符_Python基础(面向对象之类成员与修饰符)
  5. 【java/C# 服务器】IOS 配置推送证书 p12文件流程 - 勿以己悲
  6. python封装类连接mysql数据_python操作mysql数据库基本类封装
  7. boost学习之boost::lock_guard源码分析
  8. Chapter7-6_Text Style Transfer
  9. 按工作日加减天数,忽略星期六日
  10. VS创建和使用C++动态链接库教程
  11. HTML translate 属性
  12. 黑马程序员—写给各位同学,并致黑马各位老师的一封感谢信~~~~绝对给力
  13. Linux桌面 失败,ubuntu无法进入桌面,安装ubuntu-desktop失败的解决办法
  14. Linux之修改语言(语系)
  15. c语言考研复试一般考什么,考研复试考什么
  16. java 创建一个抽象类_Java-抽象类
  17. 学计算机大一入实验室,上大一就可以做科研的上科大:充分尊重第一志愿,一半新生学计算机...
  18. 华软java_“华软四个月,胜读四年书” 就业喜报上30岁的Java学员自述无标题文章...
  19. 编程小题目之01:从键盘输入一数字a,求S=a+aa+aaa+aaaa+aa...a的值,例如:a=2,S=2+22; a=4,S=4+44+444+4444
  20. [小工具] chrome上日语翻译工具

热门文章

  1. Spring Framework 5.2.5 发布,增加对 Java 14 的支持
  2. Zuul:构建高可用网关之多维度限流
  3. Spring Cloud构建微服务架构:分布式服务跟踪(整合zipkin)【Dalston版】
  4. java poi excel读写_JAVA-POI操作Excel读写
  5. php 静态类在worker,GatewayWorker的Events.php中调用Worker::runAll()出现异常
  6. reid笔记 yolov5 deepsort
  7. 旷视孙剑团队提出Anchor DETR:基于Transformer的目标检测新网络
  8. pybind 回调 多线程 异常
  9. pytorch cat、stack、tranpose、permute、unsqeeze
  10. opencv转pytorch