数据库连接和导出excal

总结了一下,大家最近出现的问题在这里我给出我遇到类似困难时的解决办法#

SQL sever的连接

  SQL sever我当时是在数据库课设的时候用过一次。

  我遇到的问题相关解决链接如下:

  链接1

  链接2

mySQL的连接

一、下载Mysql连接Jar包

1:jar可到Mysql官网下载:地址Mysql 连接jar包.
如图,在下拉列表框中选择Platform Independent

2:点击DownLoad

3:在新得页面点击No thanks, just start my download.意思是,不,谢谢,我只想进行下载

二、集成mysql jar到你得项目中

1:先新建一个文件夹,用来存放第三方jar,这里就是用来存放mysql得连接jar包

2:在新弹出得窗口中填写一个文件夹名称,文件夹名可以随便写,只要符合windows文件夹命名就可以,这里我写得是lib(library得简写)

3:你已经下载好了mysql jar包,如果第一步成功得话.如图
把下载的jar复制到刚才新建的lib下(Ctrl+c Ctrl+v)

4:右击lib下得mysql jar包------Build Path------Add to Build Path,如果成功得话,文件夹可能会有一些变化

三、连接mysql

1:新建一个MysqlManager 类,如果你不知道怎么建,以及建立在什么地方,我想你可能是缺少一些java以及IED得知识,不如回头学一下再过来.

public class MysqlManager {
	private static  Connection mConnect;
	static {
		try {
			System.out.println("init---");
			Class.forName("com.mysql.cj.jdbc.Driver");
			mConnect=DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "root", "hxl495594..");
		} catch (ClassNotFoundException | SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static Connection getConnection() {
		return mConnect;
		
	}
	public static void  close() {
		try {
			mConnect.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}

2:测试代码Main.java


public class Main {
	
	public Main() {
	

	}
	public static void main(String[] args) {
		MysqlManager.getConnection();
		
	}

}

3:如果运行以上代码没有报错,说明jar包成功集成了,并且成功连接到mysql.

但是异常总是伴随着我们,比如:

1:java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
你连接得密码可能有误

2:java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
没有找到com.mysql.cj.jdbc.Driver类,可能是你第二步没有做对,不妨回头仔细阅读一下

3:Caused by: java.net.UnknownHostException: localhost
你得mysql主机连接路径可能存在问题,

excal 导出

1.JDBC连接数据库部分在上面已经介绍,简述:创建一个JavaBean类,连接数据库获取该JavaBean对象的集合;

2.创建通用工具类,用于生成Excel模板:


import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 
public class ExcelUtil {
 
	/*
	 * 导出Excel
	 */
	public static HSSFWorkbook getHSSFWorkbook(String sheetName,
			String[] title, String[][] values, HSSFWorkbook wb) {
		// 第一步,创建一个HSSFWorkbook,对应一个Excel文件
		if (wb == null) {
			wb = new HSSFWorkbook();
		}
 
		// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
		HSSFSheet sheet = wb.createSheet(sheetName);
 
		// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel行数列数有限制
		HSSFRow row = sheet.createRow(0);
 
		// 第四步,创建单元格,并设置表头 设置表头居中
		HSSFCellStyle style = wb.createCellStyle();
		style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
 
		// 声明列对象
		HSSFCell cell = null;
 
		// 创建标题
		for (int i = 0; i < title.length; i++) {
			cell = row.createCell(i);
			cell.setCellValue(title[i]);
			cell.setCellStyle(style);
		}
 
		// 创建内容
		for (int i = 0; i < values.length; i++) {
			row = sheet.createRow(i + 1);
			for (int j = 0; j < values[i].length; j++) {
				// 将内容按顺序赋给对应的列对象
				row.createCell(j).setCellValue(values[i][j]);
			}
		}
		return wb;
	}
}

3.Action层,调用Dao层方法和Util层方法将数据转成Excel输出:

import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
 
import javax.servlet.http.HttpServletResponse;
 
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.struts2.ServletActionContext;
 
import com.kun.bean.Goods;
import com.kun.dao.TestQuery;
import com.kun.util.ExcelUtil;
import com.opensymphony.xwork2.ActionSupport;
 
public class Test extends ActionSupport {
	
	private static final long serialVersionUID = 2543844745175758118L;
	
	private String goodsid;
	
	public String getGoodsid() {
		return goodsid;
	}
 
	public void setGoodsid(String goodsid) {
		this.goodsid = goodsid;
	}
 
	public void export() {
		
//		HttpServletRequest request = ServletActionContext.getRequest();
		HttpServletResponse response=ServletActionContext.getResponse();
		
		// 获取数据
		TestQuery testQuery = new TestQuery();
		List<Goods> list = testQuery.queryGoods();
		
		//Excel标题
		String[] title = {"学院","班级"};
		
		//Excel文件名
		String fileName = "疫情信息表" + System.currentTimeMillis() + ".xls";
		
		//sheet名
		String sheetName = "有钱人";
		String[][] content = new String[list.size()][];
		for(int i=0; i<list.size(); i++){
			content[i] = new String[title.length];
			Goods g = list.get(i);
			content[i][0] = g.getGoodsid();
			content[i][1] = g.getGoodsname();
		}
		
		//创建HSSFWorkbook
		HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, content, null);
		
		try {
			this.setResponseHeader(response, fileName);
			OutputStream out = response.getOutputStream();
			wb.write(out);
			out.flush();
			out.close();
			wb.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
 
	}
	
	 //发送响应流方法
    public void setResponseHeader(HttpServletResponse response, String fileName) {
        try {
           /* try {
                fileName = new String(fileName.getBytes(),"ISO8859-1");
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }*/
            response.setContentType("application/octet-stream;charset=ISO8859-1");
            response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
            response.addHeader("Pargam", "no-cache");
            response.addHeader("Cache-Control", "no-cache");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

4.JSP页面表单提交请求:

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
<title>Insert title here</title>
</head>
<body>
	<form action="user!export.action" method="post">
		<input id="gi" name="goodsid" type="hidden" value="" />
		<button id="excel" type="submit">导出Excel</button>
	</form>
</body>
</html>

注意:如果遇到异常java.lang.NoSuchMethodException;

解决方式:

①检查Action类是否实现ActionSupport接口,Action类中是否有调用的方法;

②检查jar包、该方法是否public修饰,是否有传参(Struts2不允许方法有参数);

③清理Tomcat缓存,重新部署项目。

posted @ 2020-03-27 08:45  亦痕  阅读(502)  评论(1编辑  收藏  举报
//点击特效
//为右下角推荐推荐区域添加关注按钮 // 生成目录索引列表 //返回顶部