java 写java向数据库添加数据进java向数据库添加数据库

今天,组长分配了查询数据库记录,并把这些记录写入到excel表格中,以前没有尝试过,借鉴了一些别人的代码,最终实现了功能,写一篇博客,总结一下这个过程。1.准备需要用到的jar包
2.mysql-connector-java-5.1.30.jar
网上百度,这些jar包都可以下载的2.将下载的jar包,配置到项目当中
右击项目,选择Build Path--》Configure Build Path --》Add External JARs
然后选择你刚刚下载的jar包的路径,点击确认,这样准备工作就做好了。3.代码部分
import java.io.F
import jxl.*;
import jxl.write.*;
import jxl.write.biff.RowsExceededE
import java.sql.*;
import java.util.*; public class DBtoExcel { /**
* 导出Excel表
* @param rs 数据库结果集
* @param filePath 要保存的路径,文件名为 fileName.xls
* @param sheetName 工作簿名称 工作簿名称,本方法目前只支持导出一个Excel工作簿
* @param columnName 列名,类型为Vector
public void WriteExcel(ResultSet rs, String filePath, String sheetName, Vector columnName) {
WritableWorkbook workbook =
WritableSheet sheet =
int rowNum = 1; // 从第一行开始写入
workbook = Workbook.createWorkbook(new File(filePath)); // 创建Excel文件
sheet = workbook.createSheet(sheetName, 0); // 创建名为 sheetName 的工作簿
this.writeCol(sheet, columnName, 0); // 首先将列名写入
// 将结果集写入
while(rs.next()) {
Vector col = new Vector(); // 用以保存一行数据
for(int i = 1; i &= columnName.size(); i++) { // 将一行内容保存在col中
col.add(rs.getString(i));
// 写入Excel
this.writeCol(sheet, col, rowNum++);
}catch(Exception e) {
e.printStackTrace();
workbook.write();
workbook.close();
rs.close();
}catch(Exception e) {
e.printStackTrace();
* 将数组写入工作簿
* @param sheet 要写入的工作簿
* @param col 要写入的数据数组
* @param rowNum 要写入哪一行
* @throws WriteException
* @throws RowsExceededException
private void writeCol(WritableSheet sheet, Vector col, int rowNum) throws RowsExceededException, WriteException {
int size = col.size(); // 获取集合大小
for(int i = 0; i & i++) { // 写入每一列
Label label = new Label(i, rowNum, (String) col.get(i));
sheet.addCell(label);
public static void main(String[] args) throws SQLException {
String DRIVER = "com.mysql.jdbc.Driver";
String URL = "jdbc:mysql://localhost:3306/meritlink";//根据自己的数据库设置路径和用户名密码
String USERNAME = "root";
String USERPASSWORD = "";
String sql = "SELECT nn , COUNT(*) AS times FROM "
+ "(SELECT SUBSTRING_INDEX(NAME, '/', -2) nn ,accesstime FROM accessinfo WHERE accesstime BETWEEN''
+ "GROUP BY nn ORDER BY times DESC;"; // 根据自己的要求书写sql语句
Vector columnName = new Vector(); // 列名
columnName.add("网页名称");
columnName.add("访问次数");
// 连接数据库
Class.forName(DRIVER);
Connection conn = DriverManager.getConnection(URL,USERNAME,USERPASSWORD);
PreparedStatement ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
// 导出文件的路径和工作簿名称都可根据自己的需求修改
new DBtoExcel().WriteExcel(rs, "F:/visitinfo/day03.xls", "访问记录", columnName);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
将数据库查询出的数据保存到Excel表格中
在项目中,我们通常会有将页面展示的内容保存到Excel表格中的需求,那我遇到这类问题,我们应该如何实现呢?
下面介绍一种导出Excel的方法。
我们可以很轻易的从各大网站上搜索到所需要的j...
java实现数据库数据导出到Excel并下载查看
1、首先下载工具类:http://download.csdn.net/download/ledzcl/
2、直接调用工具类的中的export这个方法,放上源码。
@Respon...
导出数据库数据到excel表中(使用POI技术)
项目中可能经常需要导出数据报表到excel中,方便保存和备份,下面介绍使用poi进行数据导出到excel表中的方法
利用POI将数据库表导出到Excel
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。它的主要结构包括:HSSF,XSSF等等。我们一般都...
java SpringMVC中 POI读取数据库数据并写入Excel表格中,并实现下载功能
java SpringMVC中 POI读取数据库数据并写入Excel表格中,并实现下载功能
java读取数据库中的数据并存储到excel中去
我们在开发中可能会遇到将数据库中的数据都取出来存储到excel中去
在操作过程中用到了poi-3.17.jar包
* 构建Excel
* map参数 用来保存数据 保存的是...
java读取excel并使用JDBC方式写入数据库
一,读取excel文件工具类废话不多说直接上代码:import jxl.S
import jxl.W
import jxl.read.biff.BiffE
利用java在excel中读取和写入数据
在处理excel数据时候有两种方式:
一种是首先依据excel中的数据创建一个相应的实体类,将每一条数据视为一个对象,然后将对excel中的数据处理转成对对象的处理。
一种是将每一...
使用JAVA的poi进行Excel表格的读取,以及往数据库进行数据的插入
JAVA通过poi进行Excel文档的读取操作
Java从数据库查询数据并封装到EXCEL表格中步骤
1.在Controller中调用Service和dao
List list=mySQLService.getALL() //此处从数据中取数据并封装到Student实体中
2.将查询出来的数据...
没有更多推荐了,业务逻辑写在java里还是写在数据库里
<a data-traceid="question_detail_above_text_l&&
最近读Oracle编程艺术,作者建议将业务逻辑全部写到数据库里,Java只是作为一种扩展使用。作者列举出了这种做法的种种好处,但是作者作为一个数据库专家,本身对待技术上可能就有倾向,况且这又是一本关于Oracle的书。
我现在想知道,将业务逻辑写到数据库和写到Java里这两种方法的优缺点各是什么?之前搜索到的答案都是“我是写到XX里去的”,“我觉得应该这么做”,但是没人给出具体的原因,有的原因也像作者这样,只给出了自己这么做的优点,对于分析不同业务场景的意义就局限了。谢了各位先~
TOM大叔是oracle第一牛人,同时他也很精通Java,他的很多观点还是很值得我们思考的,我觉得如果团队里有比较多人是熟悉数据库的话,业务逻辑放在数据库里是比较好的选择。
--- 共有 1 条评论 ---
是的,但我想知道的是这二者各自的优缺点...除了概率很小的切换数据库外,TOM大叔没有提到业务逻辑写到Java中的优点,毕竟他是在写一本Oracle书,所以我对此感到疑惑。但按照你的观点,的确在很多场景下,我们得根据自己团队的能力来决定到底是写在哪儿,多谢指导~
业务写作数据库里会增加数据库的压力,不易维护,易出问题,出问题了直接在数据库里捣鼓,不小心数据搞丢了,搞坏了呢?容易造成严重的事故,这样对数据库人才要求特高。
业务写作程序里有些涉及到事务、锁、定时要求准确,应用程序多处处理或分布式的啊等这样会给程序维护造成极大的麻烦,一个业务往往要多出维护;有时处理一些大量的数据,对数据库和应用程序都是个负担,大量的读取大量的更新或插入,而数据库往往存储过程游标一些判断等就能轻易搞定,我们还要程序来处理吗?
我觉得结核公司的情况(要求高点,这样有动力嘛),业务流程和要求,系统架构(想远点)等因素一起考虑应该大概能找到哪些放在数据库比较好哪些放在应用程序比较好了吧?
以上是个人的一些愚见,多多指教!
我们目前写载数据库里,感觉只要用java写个工具类,业务写在数据库里快。几乎不要些什么java代码。好处就是开发快,感觉也不难,缺点就是换不了数据库。javaweb向数据库写入数据的时候,数据库显示?????_java吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:726,715贴子:
javaweb向数据库写入数据的时候,数据库显示?????收藏
设置字符集编码。
一般这个是因为编码问题吧
用Eclipse向 MySQL 中写入数据,数据库中的数据会变成
数据库中 ,建表时候的 编码已经改成UTF-8了。在传输 数据的 时候,在JAVA中并没有 乱码。
我猜测是在 数据库中 乱码。但一直找不到是哪里出错。
登录百度帐号java如何实现web页面获取数据插入到数据库中_百度经验
&&&&&&&&&大学及以上java如何实现web页面获取数据插入到数据库中?听语音123456
百度经验:jingyan.baidu.com在java开发的时候,我们要实现一个网页,获取用户输入的值,然后插入到后台数据库中,这是一个很简单的例子,现在就教大家如何实现。百度经验:jingyan.baidu.commyeclipse软件百度经验:jingyan.baidu.com1要实现用户输入,肯定前台要是一个网页,我们现在就使用jsp,先建一个jsp网页,页面展示内容如下所示。2要把前端界面上的数据,返回到后台数据,我们就要使用到servlet,所以在jsp文件中,我们就需要一个表单form。就可以把数据转到servlet中,antion里面写servlet的地址,method里面写方法“get或者post”,一般删除数据默认是“get”添加数据是“post”。3然后我们在servlet中来获取页面上的值,注意获取的值是String类型的。如果要用到int型,就想要强转类型。4然后我们就需要把数据插入到 对象的属性中,使用set的方法。5最后,调用add的方法,就可以把数据插入到后台。6具体的插入到数据库的代码如下,要注意数据库的链接。END经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。投票(31)已投票(31)有得(0)我有疑问(0)◆◆说说为什么给这篇经验投票吧!我为什么投票...你还可以输入500字◆◆只有签约作者及以上等级才可发有得&你还可以输入1000字◆◆如对这篇经验有疑问,可反馈给作者,经验作者会尽力为您解决!你还可以输入500字相关经验812004热门杂志第1期作文书写技巧964次分享第12期祝你好“孕”497次分享第1期当我们有了孩子345次分享第1期新学期 新气象169次分享第1期孕妇饮食指导580次分享◆请扫描分享到朋友圈&第一中方式:定义2个数据库连接,一个是MasterDataSource,另一个是SlaveDataSource。更新数据时我们读取MasterDataSource,查询数据时我们读取SlaveDataSource
该示例是基于提供的AbstractRoutingDataSource,实现了一个动态数据源的功能,在spring配置中定义多个数据库分为主、从数据库,实现效果为当进行保存和修改记录时则对主表操作,查询则对从表进行操作,从而实现对数据库表的读写分离。这样做有利于提高网站的性能,特别是在数据库这一层。因为在实际的应用中,数据库都是读多写少(读取数据的频率高,更新数据的频率相对较少),而读取数据通常耗时比较长,占用数据库服务器的CPU较多,从而影响用户体验。我们通常的做法就是把查询从主库中抽取出来,采用多个从库,使用负载均衡,减轻每个从库的查询压力。该示例并未对数据库同步进行说明,只对读写操作的分离实现:
在进行操作之前,先简单说一下AbstractRoutingDataSource相关的东西:
1 AbstractRoutingDataSource继承了AbstractDataSource ,而AbstractDataSource 又是DataSource 的子类。DataSource
是javax.sql 的数据源接口,定义如下:
3 public abstract class AbstractRoutingDataSource extends AbstractDataSource implements InitializingBean
5 public interface DataSource
extends CommonDataSource,Wrapper {
* &p&Attempts to establish a connection with the data source that
* this &code&DataSource&/code& object represents.
<span style="color: #
<span style="color: #
a connection to the data source
<span style="color: #
* @exception SQLException if a database access error occurs
<span style="color: #
<span style="color: #
Connection getConnection() throws SQLE
<span style="color: #
<span style="color: #
<span style="color: #
* &p&Attempts to establish a connection with the data source that
<span style="color: #
* this &code&DataSource&/code& object represents.
<span style="color: #
<span style="color: #
* @param username the database user on whose behalf the connection is
<span style="color: #
being made
<span style="color: #
* @param password the user's password
<span style="color: #
a connection to the data source
<span style="color: #
* @exception SQLException if a database access error occurs
<span style="color: #
* @since 1.4
<span style="color: #
<span style="color: #
Connection getConnection(String username, String password)
<span style="color: #
throws SQLE
<span style="color: #
<span style="color: # }
<span style="color: #
<span style="color: #
<span style="color: # public Connection getConnection() throws SQLException {
<span style="color: #
return determineTargetDataSource().getConnection();
<span style="color: #
<span style="color: #
<span style="color: #
public Connection getConnection(String username, String password) throws SQLException {
<span style="color: #
return determineTargetDataSource().getConnection(username, password);
<span style="color: #
<span style="color: #
<span style="color: # protected DataSource determineTargetDataSource() {
<span style="color: #
Assert.notNull(this.resolvedDataSources, "DataSource router not initialized");
<span style="color: #
Object lookupKey = determineCurrentLookupKey();
<span style="color: #
DataSource dataSource = this.resolvedDataSources.get(lookupKey);
<span style="color: #
if (dataSource == null && (this.lenientFallback || lookupKey == null)) {
<span style="color: #
dataSource = this.resolvedDefaultDataS
<span style="color: #
<span style="color: #
if (dataSource == null) {
<span style="color: #
throw new IllegalStateException("Cannot determine target DataSource for lookup key [" + lookupKey + "]");
<span style="color: #
<span style="color: #
return dataS
<span style="color: #
从上面的代码中不难看出,获取数据源首先是通过对determineCurrentLookupKey()的调用获取resolvedDataSources对应key的值,故执行创建一个动态数据源类继承AbstractRoutingDataSource,复写determineCurrentLookupKey()去自定义设置和获取resolvedDataSources的key就可以实现了
具体步骤如下:
&?xml version="1.0" encoding="UTF-8"?&
&beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd"
default-lazy-init="true"&
&!-- 引入配置文件 --&
&context:component-scan base-package="com.he" /&
&bean id="masterdataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close"&
&property name="driverClassName" value="com.mysql.jdbc.Driver" /&
&property name="url" value="jdbc:mysql://localhost:3306/test" /&
&property name="username" value="root" /&
&property name="password" value="111111" /&
&bean id="slavedataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close"&
&property name="driverClassName" value="com.mysql.jdbc.Driver" /&
&property name="url" value="jdbc:mysql://localhost:3306/test2" /&
&property name="username" value="root" /&
&property name="password" value="111111" /&
&bean id="dataSource" class="com.he.mysql.test.DynamicDataSource"&
&property name="targetDataSources"&
&map key-type="java.lang.String"&
&!-- write --&
&entry key="masterdataSource" value-ref="masterdataSource"/&
&!-- read --&
&entry key="slavedataSource" value-ref="slavedataSource"/&
&/property&
&property name="defaultTargetDataSource" ref="masterdataSource"/&
&bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"&
&property name="dataSource" ref="dataSource" /&
&property name="mapperLocations" value="classpath:com/he/dao/*.xml"&&/property&
&bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"&
&property name="basePackage" value="com.he.dao" /&
&property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"&&/property&
&bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&
&property name="dataSource" ref="dataSource" /&
&!-- 注解式事务管理,需要在Service类上标注@Transactional --&
&tx:annotation-driven transaction-manager="transactionManager" /&
<span style="color: # public class DynamicDataSource extends AbstractRoutingDataSource {
<span style="color: #
<span style="color: #
<span style="color: #
protected Object determineCurrentLookupKey() {
<span style="color: #
<span style="color: #
return DynamicDataSourceHolder.getDataSouce();
<span style="color: #
<span style="color: #
<span style="color: # }
创建动态数据源类继承AbstractRoutingDataSource
1 public class DynamicDataSourceHolder {
public static final ThreadLocal&String& holder = new ThreadLocal&String&();
public static void putDataSource(String name) {
holder.set(name);
public static String getDataSouce() {
return holder.get();
<span style="color: #
<span style="color: # }
设置及获取每个线程访问的哪个数据源
1 @Service("userService")
2 @Transactional
3 public class UserServiceImpl implements UserService{
@Autowired
private UserMapper userDpublic void add(User user) {
DynamicDataSourceHolder.putDataSource("masterdataSource");
userDao.add(user);
<span style="color: #
<span style="color: #
<span style="color: #
public void update(User user) {
<span style="color: #
<span style="color: #
DynamicDataSourceHolder.putDataSource("masterdataSource");
<span style="color: #
userDao.updates(user);
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
@Transactional(propagation = Propagation.NOT_SUPPORTED)
<span style="color: #
public List&User& query() {
<span style="color: #
<span style="color: #
DynamicDataSourceHolder.putDataSource("slavedataSource");
<span style="color: #
List&User& user = userDao.query();
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: # }
对service实现层加入设置数据源代码
&第二种实现方式:基于上述的配置,只需要做部分的更改即可,主要是结合springAOP思想和反射机制去实现
第一步:基于上面的spring配置中加入aop相关配置
<span style="color: # &!-- 配置数据库注解aop --&
<span style="color: #
&bean id="manyDataSourceAspect" class="com.he.aspect.DataSourceAspect" /&
<span style="color: #
&aop:config&
<span style="color: #
&aop:aspect id="c" ref="manyDataSourceAspect"&
<span style="color: #
&aop:pointcut id="tx" expression="execution(* com.he.dao.*.*(..))"/&
<span style="color: #
&aop:before pointcut-ref="tx" method="before"/&
<span style="color: #
&/aop:aspect&
<span style="color: #
&/aop:config&
第二步:构建DataSource和DataSourceAspect
1 import java.lang.annotation.ElementT
2 import java.lang.annotation.R
3 import java.lang.annotation.RetentionP
4 import java.lang.annotation.T
6 @Retention(RetentionPolicy.RUNTIME)
7 @Target(ElementType.METHOD)
8 public @interface DataSource {
String value();
<span style="color: # }
DataSource
1 import java.lang.reflect.M
3 import org.aspectj.lang.JoinP
4 import org.aspectj.lang.reflect.MethodS
6 import com.he.mysql.test.DataS
7 import com.he.mysql.test.DynamicDataSourceH
<span style="color: # public class DataSourceAspect {
<span style="color: #
public void before(JoinPoint point)
<span style="color: #
<span style="color: #
Object target = point.getTarget();
<span style="color: #
String method = point.getSignature().getName();
<span style="color: #
<span style="color: #
Class&?&[] classz = target.getClass().getInterfaces();
<span style="color: #
<span style="color: #
Class&?&[] parameterTypes = ((MethodSignature) point.getSignature())
<span style="color: #
.getMethod().getParameterTypes();
<span style="color: #
<span style="color: #
Method m = classz[0].getMethod(method, parameterTypes);
<span style="color: #
if (m != null && m.isAnnotationPresent(DataSource.class)) {
<span style="color: #
DataSource data = m
<span style="color: #
.getAnnotation(DataSource.class);
<span style="color: #
DynamicDataSourceHolder.putDataSource(data.value());
<span style="color: #
System.out.println(data.value());
<span style="color: #
<span style="color: #
<span style="color: #
} catch (Exception e) {
<span style="color: #
// TODO: handle exception
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: # }
DataSourceAspect
第三步:将serviceImpl中手动植入的代码移除,在dao层接口加入注解
<span style="color: # @Repository
<span style="color: # public interface UserMapper {
<span style="color: #
@DataSource("masterdataSource")
<span style="color: #
public void add(User user);
<span style="color: #
@DataSource("masterdataSource")
<span style="color: #
public void updates(User user);
<span style="color: #
@DataSource("slavedataSource")
<span style="color: #
public List&User& query();
<span style="color: # }
上述为实现读写分离的关键部分,只是为了简单的做一个示例,完成上面操作以后,可自行的对数据库进行新增和查询操作,查看效果
阅读(...) 评论()

我要回帖

更多关于 java数据库里的数据放入集合 的文章

 

随机推荐