时间:2021-07-01 10:21:17 帮助过:2人阅读
1.使用DatabaseMetaData分析数据库的数据结构和相关信息。
(1)测试得到所有数据库名:
- <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> DataSource ds=<span style="color: #000000;">DataSourceUtils_C3P0.getDataSource();
- Connection conn</span>=<span style="color: #000000;">ds.getConnection();
- DatabaseMetaData dbmd</span>=<span style="color: #000000;">conn.getMetaData();
- ResultSet rs</span>=<span style="color: #000000;">dbmd.getCatalogs();
- </span><span style="color: #0000ff;">while</span><span style="color: #000000;">(rs.next())
- {
- System.out.println(rs.getString(</span>"TABLE_CAT"<span style="color: #000000;">));
- }
- String dbName</span>=<span style="color: #000000;">dbmd.getDatabaseProductName();
- String dbVersion</span>=<span style="color: #000000;">dbmd.getDatabaseProductVersion();
- System.out.println(dbName</span>+":"+dbVersion);
运行结果:
- <span style="color: #000000;">information_schema
- bms
- bookstore
- contacts
- day20
- mysql
- performance_schema
- shopping
- test
- user
- users
- MySQL:</span>5.5.25
(2)根据数据库名得到所有表名
- <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> testGetTalbesByDBName() <span style="color: #0000ff;">throws</span><span style="color: #000000;"> SQLException
- {
- Connection conn</span>=<span style="color: #000000;">ds.getConnection();
- DatabaseMetaData dbmd</span>=<span style="color: #000000;">conn.getMetaData();
- ResultSet rs</span>=dbmd.getTables("test", "test", <span style="color: #0000ff;">null</span>, <span style="color: #0000ff;">new</span> String[]{"TABLE"<span style="color: #000000;">});
- </span><span style="color: #0000ff;">while</span><span style="color: #000000;">(rs.next())
- {
- System.out.println(rs.getString(</span>"TABLE_NAME"<span style="color: #000000;">));
- }
- }</span>
运行结果:
- <span style="color: #000000;">people
- user</span>
2.使用ResultSetMetaData分析表结构。
- <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> testTest1() <span style="color: #0000ff;">throws</span><span style="color: #000000;"> SQLException
- {
- Connection conn</span>=<span style="color: #000000;">ds.getConnection();
- Statement st</span>=<span style="color: #000000;">conn.createStatement();
- ResultSet rs</span>=st.executeQuery("select id,name,age,sex from people"<span style="color: #000000;">);
- ResultSetMetaData rsmd</span>=<span style="color: #000000;">rs.getMetaData();
- </span><span style="color: #0000ff;">int</span> columnsCount=<span style="color: #000000;">rsmd.getColumnCount();
- System.err.println(</span>"一共有"+columnsCount+"列!"<span style="color: #000000;">);
- </span><span style="color: #0000ff;">for</span>(<span style="color: #0000ff;">int</span> i=0;i<columnsCount;i++<span style="color: #000000;">)
- {
- String columnName</span>=rsmd.getColumnName(i+1<span style="color: #000000;">);
- System.out.print(columnName</span>+"\t\t"<span style="color: #000000;">);
- }
- System.out.println();
- </span><span style="color: #0000ff;">while</span><span style="color: #000000;">(rs.next())
- {
- </span><span style="color: #0000ff;">for</span>(<span style="color: #0000ff;">int</span> i=0;i<columnsCount;i++<span style="color: #000000;">)
- {
- String columnName</span>=rsmd.getColumnName(i+1<span style="color: #000000;">);
- System.out.print(rs.getString(columnName)</span>+"\t\t"<span style="color: #000000;">);
- }
- System.out.println();
- }
- conn.close();
- }</span>
运行结果:
- <span style="color: #000000;">id name age sex
- </span>001 张三 12<span style="color: #000000;"> 男
- </span>002 李四 13<span style="color: #000000;"> 男
- </span>003 王五 15 男
3.使用第三方jar包测试操作Excel文件。
(1)POI下载:http://poi.apache.org/download.html
(2)测试POI
- <span style="color: #0000ff;">package</span><span style="color: #000000;"> day17.kdyzm.Test;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.FileOutputStream;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.poi.hssf.usermodel.HSSFWorkbook;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.poi.ss.usermodel.Cell;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.poi.ss.usermodel.Row;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.poi.ss.usermodel.Sheet;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.poi.ss.usermodel.Workbook;
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> TestPOI {
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> main(String[] args) <span style="color: #0000ff;">throws</span><span style="color: #000000;"> Exception {
- FileOutputStream fos</span>=<span style="color: #0000ff;">new</span> FileOutputStream("first.xls"<span style="color: #000000;">);
- Workbook workbook</span>=<span style="color: #0000ff;">new</span><span style="color: #000000;"> HSSFWorkbook();
- Sheet sheet</span>=workbook.createSheet("第一张表"<span style="color: #000000;">);
- Row row</span>=sheet.createRow(0<span style="color: #000000;">);
- Cell cell1</span>=row.createCell(0<span style="color: #000000;">);
- cell1.setCellValue(</span>"第一行第一列第一个数据"<span style="color: #000000;">);
- Cell cell2</span>=row.createCell(1<span style="color: #000000;">);
- cell2.setCellValue(</span>"第一行第二列第一个数据"<span style="color: #000000;">);
- workbook.close();
- workbook.write(fos);
- fos.close();
- }
- }</span>
运行结果:
4.导出数据库到Excel,每一个标签页对应着一张表,而且要求灵活更换内容。
- <span style="color: #0000ff;">package</span><span style="color: #000000;"> day17.kdyzm.exportToExcel;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.io.FileOutputStream;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.sql.Connection;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.sql.DatabaseMetaData;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.sql.ResultSet;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.sql.ResultSetMetaData;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.sql.SQLException;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.sql.Statement;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.ArrayList;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.List;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.poi.hssf.usermodel.HSSFWorkbook;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.poi.ss.usermodel.Cell;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.poi.ss.usermodel.Row;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.poi.ss.usermodel.Sheet;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.poi.ss.usermodel.Workbook;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> day17.regular.utils.DataSourceUtils_C3P0;
- </span><span style="color: #008000;">/**</span><span style="color: #008000;">
- * 将数据库中的表数据导出到Excel表格中
- * </span><span style="color: #808080;">@author</span><span style="color: #008000;"> kdyzm
- *
- </span><span style="color: #008000;">*/</span>
- <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> ExportDataToExcel {
- </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> String dbname="bookstore"<span style="color: #000000;">;
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> main(String[] args) <span style="color: #0000ff;">throws</span><span style="color: #000000;"> Exception {
- List</span><String>tablenames=<span style="color: #000000;">getAllTableNames(dbname);
- backupToXls(tablenames);
- }
- </span><span style="color: #008000;">//</span><span style="color: #008000;">通过所有的表名将数据被分到xls文件中</span>
- <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> backupToXls(List<String> tablenames) <span style="color: #0000ff;">throws</span><span style="color: #000000;"> Exception {
- Connection conn</span>=<span style="color: #000000;">DataSourceUtils_C3P0.getConnection();
- Workbook wb</span>=<span style="color: #0000ff;">new</span><span style="color: #000000;"> HSSFWorkbook();
- FileOutputStream fos</span>=<span style="color: #0000ff;">new</span> FileOutputStream(dbname+".xls"<span style="color: #000000;">);
- Statement st</span>=<span style="color: #000000;">conn.createStatement();
- </span><span style="color: #0000ff;">for</span><span style="color: #000000;">(String tablename:tablenames)
- {
- Sheet sheet</span>=<span style="color: #000000;">wb.createSheet(tablename);
- String sql</span>="select * from "+dbname+"."+<span style="color: #000000;">tablename;
- ResultSet rs</span>=<span style="color: #000000;">st.executeQuery(sql);
- ResultSetMetaData rsmt</span>=<span style="color: #000000;">rs.getMetaData();
- </span><span style="color: #0000ff;">int</span> columns=<span style="color: #000000;">rsmt.getColumnCount();
- </span><span style="color: #008000;">//</span><span style="color: #008000;">写入第一行tablehead</span>
- Row tablehead=sheet.createRow(0<span style="color: #000000;">);
- </span><span style="color: #0000ff;">for</span>(<span style="color: #0000ff;">int</span> i=0;i<columns;i++<span style="color: #000000;">)
- {
- String columnName</span>=rsmt.getColumnName(i+1<span style="color: #000000;">);
- Cell cell</span>=<span style="color: #000000;">tablehead.createCell(i);
- cell.setCellValue(columnName);
- }
- </span><span style="color: #008000;">//</span><span style="color: #008000;">写入数据</span>
- <span style="color: #0000ff;">int</span> index=1<span style="color: #000000;">;
- </span><span style="color: #0000ff;">while</span><span style="color: #000000;">(rs.next())
- {
- Row row</span>=sheet.createRow(index++<span style="color: #000000;">);
- </span><span style="color: #0000ff;">for</span>(<span style="color: #0000ff;">int</span> i=0;i<columns;i++<span style="color: #000000;">)
- {
- String columnName</span>=rsmt.getColumnName(i+1<span style="color: #000000;">);
- String value</span>=<span style="color: #000000;">rs.getString(columnName);
- Cell cell</span>=<span style="color: #000000;">row.createCell(i);
- cell.setCellValue(value);
- }
- }
- }
- wb.write(fos);
- wb.close();
- fos.close();
- conn.close();
- }
- </span><span style="color: #008000;">//</span><span style="color: #008000;">首先获得所有的表名列表</span>
- <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> List<String> getAllTableNames(String dbname) <span style="color: #0000ff;">throws</span><span style="color: #000000;"> SQLException {
- Connection conn</span>=<span style="color: #000000;">DataSourceUtils_C3P0.getConnection();
- DatabaseMetaData dmd</span>=<span style="color: #000000;">conn.getMetaData();
- ResultSet rs</span>=dmd.getTables(dbname, dbname, <span style="color: #0000ff;">null</span>, <span style="color: #0000ff;">new</span> String[]{"TABLE"<span style="color: #000000;">});
- List</span><String>tablenames=<span style="color: #0000ff;">new</span> ArrayList<String><span style="color: #000000;">();
- </span><span style="color: #0000ff;">while</span><span style="color: #000000;">(rs.next())
- {
- tablenames.add(rs.getString(</span>"TABLE_NAME"<span style="color: #000000;">));
- }
- conn.close();
- </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> tablenames;
- }
- }</span>
运行结果:
二、多条件查询方法简介
1.核心思想: where 1=1 使用的要恰到好处
2.实现方法:
- <span style="color: #0000ff;">package</span><span style="color: #000000;"> day17.kdyzm.searchByMultipleInput;
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> People {
- </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String id;
- </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String name;
- </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> age;
- </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String sex;
- </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> People() {
- }
- </span><span style="color: #0000ff;">public</span> People(String id, String name, <span style="color: #0000ff;">int</span><span style="color: #000000;"> age, String sex) {
- </span><span style="color: #0000ff;">super</span><span style="color: #000000;">();
- </span><span style="color: #0000ff;">this</span>.id =<span style="color: #000000;"> id;
- </span><span style="color: #0000ff;">this</span>.name =<span style="color: #000000;"> name;
- </span><span style="color: #0000ff;">this</span>.age =<span style="color: #000000;"> age;
- </span><span style="color: #0000ff;">this</span>.sex =<span style="color: #000000;"> sex;
- }
- </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String getId() {
- </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> id;
- }
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> setId(String id) {
- </span><span style="color: #0000ff;">this</span>.id =<span style="color: #000000;"> id;
- }
- </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String getName() {
- </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> name;
- }
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> setName(String name) {
- </span><span style="color: #0000ff;">this</span>.name =<span style="color: #000000;"> name;
- }
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span><span style="color: #000000;"> getAge() {
- </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> age;
- }
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> setAge(<span style="color: #0000ff;">int</span><span style="color: #000000;"> age) {
- </span><span style="color: #0000ff;">this</span>.age =<span style="color: #000000;"> age;
- }
- </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String getSex() {
- </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> sex;
- }
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> setSex(String sex) {
- </span><span style="color: #0000ff;">this</span>.sex =<span style="color: #000000;"> sex;
- }
- @Override
- </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String toString() {
- </span><span style="color: #0000ff;">return</span> "People [id=" + id + ", name=" + name + ", age=" +<span style="color: #000000;"> age
- </span>+ ", sex=" + sex + "]"<span style="color: #000000;">;
- }
- }</span>
- <span style="color: #0000ff;">package</span><span style="color: #000000;"> day17.kdyzm.searchByMultipleInput;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.sql.SQLException;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.ArrayList;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> java.util.List;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> javax.sql.DataSource;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.commons.dbutils.QueryRunner;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> org.apache.commons.dbutils.handlers.BeanListHandler;
- </span><span style="color: #0000ff;">import</span><span style="color: #000000;"> day17.regular.utils.DataSourceUtils_C3P0;
- </span><span style="color: #008000;">/**</span><span style="color: #008000;">
- * 多条件查询方法:可以极大提高代码书写效率
- * 结合dbutils
- * 结合java Bean
- * </span><span style="color: #808080;">@author</span><span style="color: #008000;"> kdyzm
- *
- </span><span style="color: #008000;">*/</span>
- <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> SearchByMultipleInput {
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> main(String args[]) <span style="color: #0000ff;">throws</span><span style="color: #000000;"> SQLException{
- DataSource ds</span>=<span style="color: #000000;">DataSourceUtils_C3P0.getDataSource();
- String sql</span>="select * from people where 1=1"<span style="color: #000000;">;
- People p</span>=<span style="color: #0000ff;">new</span><span style="color: #000000;"> People();
- p.setId(</span><span style="color: #0000ff;">null</span><span style="color: #000000;">);
- p.setName(</span><span style="color: #0000ff;">null</span><span style="color: #000000;">);
- p.setAge(</span>0<span style="color: #000000;">);
- p.setSex(</span>"女"<span style="color: #000000;">);
- List</span><String>list=<span style="color: #0000ff;">new</span> ArrayList<String><span style="color: #000000;">();
- </span><span style="color: #0000ff;">if</span>(p.getId()!=<span style="color: #0000ff;">null</span><span style="color: #000000;">){
- sql</span>=sql+" and id=?"<span style="color: #000000;">;
- list.add(p.getId());
- }
- </span><span style="color: #0000ff;">if</span>(p.getName()!=<span style="color: #0000ff;">null</span><span style="color: #000000;">){
- sql</span>=sql+" and name like ?"<span style="color: #000000;">;
- list.add(</span>"%"+p.getName()+"%"<span style="color: #000000;">);
- }
- </span><span style="color: #0000ff;">if</span>(p.getAge()!=0<span style="color: #000000;">){
- sql</span>=sql+" and age=?"<span style="color: #000000;">;
- list.add(p.getAge()</span>+""<span style="color: #000000;">);
- }
- </span><span style="color: #0000ff;">if</span>(p.getSex()!=<span style="color: #0000ff;">null</span><span style="color: #000000;">){
- sql</span>=sql+" and sex=?"<span style="color: #000000;">;
- list.add(p.getSex());
- }
- QueryRunner run</span>=<span style="color: #0000ff;">new</span><span style="color: #000000;"> QueryRunner(ds);
- List</span><People>peoples=run.query(sql,<span style="color: #0000ff;">new</span> BeanListHandler<People>(People.<span style="color: #0000ff;">class</span><span style="color: #000000;">),list.toArray());
- </span><span style="color: #0000ff;">for</span><span style="color: #000000;">(People pp:peoples)
- {
- System.out.println(pp);
- }
- }
- }</span>
【Java EE 学习第17天】【数据库导出到Excel】【多条件查询方法】
标签: