java读取Access数据 实现代码及教程
- 2021-09-18
- 来源/作者: 菜鸟图库/ 菜鸟图库
- 409 次浏览
连接Access数据库
创建AccessDbUtil类,连接数据库
import java.sql.Connection;
import java.sql.DriverManager;
/**
* 获取Access连接
*
* @author dofun
*
*/
public class AccessDbUtil
{
public static Connection getDbConnection()
{
// 数据库url
String url = "jdbc:Access:///E:ICD10.mdb";
Connection conn = null;
try
{
// 驱动加载
Class.forName("com.hxtt.sql.access.AccessDriver").newInstance();
conn = DriverManager.getConnection(url);
return conn;
}
catch (Exception e)
{
System.out.println("Access连接失败");
}
return conn;
}
}
读取Access数据并保存在mysql数据库
获取access数据库连接
查询表数据,并保存
关闭连接资源
/**
* 同步疾病,手术
*
* @return
*/
@RequestMapping(value = "importJbbm")
@ResponseBody
public String importJbbm()
{
// 获取数据库连接
Connection conn = AccessDbUtil.getDbConnection();
PreparedStatement pst = null;
ResultSet rs = null;
Boolean a = true;
int id = 30000;
try
{
for (int i = 1; i > 0; i++)
{
// 手术
pst = conn.prepareStatement("select * from sJBBMML where id > " + id + " and LB = 'S' ");
List<IcdSsbm> jbs = new ArrayList<>();
rs = pst.executeQuery();
while (a == rs.next())
{
if (StringUtils.isNotBlank(rs.getString(2)))
{
IcdSsbm jb = new IcdSsbm();
jb.setCode(rs.getString(2));
jb.setName(rs.getString(5));
jb.setType(rs.getString(11));
jbs.add(jb);
}
else
{
a = false;
i = 0;
}
// System.out.println(rs.getString(2));
// System.out.println(rs.getString(5));
// System.out.println(rs.getString(11));
}
if (ListUtils.isNotEmpty(jbs))
{
// 批量保存
icdSsbmService.saveBatch(jbs);
}
id += 1000;
}
}
catch (SQLException e)
{
}
finally
{
try
{
// 关闭资源
rs.close();
pst.close();
conn.close();
}
catch (SQLException e)
{
}
}
return "导入完成";
}
问题
如果Access数据库设置了密码,获取连接的时候也加了密码参数,还是出现错误,找不到原因,最后就把Access数据库密码去掉了。
Access的分页问题,一次只能查询出1000条数据,其实Access本身是有分页查询的,只是看起很繁琐我并没有用,而且在数据量大的时候性能并不是很好。所以我是采用循环的形式,简单。
用的是Access_JDBC30.jar,java1.8竟然不支持Access了。网上好像有破解好的驱动,说是破了分页查询的限制
标签(TAG) java读取Access数据