import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MsAccessDBUtils {
private static MsAccessDBUtils instance = null;
public static MsAccessDBUtils getInstance() {
if (instance == null) {
instance = new MsAccessDBUtils();
}
return instance;
}
private MsAccessDBUtils() {}
//最先被调用 mdbFile=d:\xxx.mdb
public void loadConfig(String mdbFile,String user,String psw) throws Exception{
mdb_file = mdbFile;
user = user;
pwd = psw;
loadDriver();
}
public void loadConfig(String mdbFile) throws Exception{
mdb_file = mdbFile;
loadDriver();
}
private static String dirverClass = "sun.jdbc.odbc.JdbcOdbcDriver";
private static String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ=";
private static String mdb_file = null;//access 文件[这里要绝对路径]
private static String user = "";
private static String pwd = "";
private static Connection conn;
private static Statement stmt;
private static ResultSet rs;
private void loadDriver() throws Exception{
try {
Class.forName(dirverClass);
} catch (Exception e) {
throw e;
}
}
//创建不可滚动的连接
public static void connect() throws Exception{
try {
System.out.println(url+mdb_file);
System.out.println(user);
System.out.println(pwd);
conn = DriverManager.getConnection(url+mdb_file, user, pwd);
stmt = conn.createStatement();
} catch (Exception e) {
throw e;
}
}
public static void connect(boolean autocommit) throws Exception{
try {
conn = DriverManager.getConnection(url+mdb_file, user, pwd);
conn.setAutoCommit(autocommit);
stmt = conn.createStatement();
} catch (Exception e) {
throw e;
}
}
//创建可以滚动的连接
public static void connect2() throws Exception{
try {
conn = DriverManager.getConnection(url+mdb_file, user, pwd);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
} catch (Exception e) {
throw e;
}
}
//关闭连接
public static void close() throws Exception{
try {
if (rs != null) {
rs.close();
rs=null;
}
if (stmt != null) {
stmt.close();
stmt=null;
}
if (conn != null) {
conn.close();
conn=null;
}
} catch (Exception e) {
throw e;
}
}
//查询语句
public static List executeQuery(String sql) throws Exception{
List l = new ArrayList();
try {
if (stmt == null) {
connect();
}
rs = stmt.executeQuery(sql);
l = orgResultSet4List(rs);
//close();
} catch (Exception e) {
throw e;
}
return l;
}
public static int executeUpdate(String sql) throws Exception{
try {
if (stmt == null) {
connect();
}
int res = stmt.executeUpdate(sql);
//close();
return res;
} catch (Exception e) {
throw e;
}
}
public static int[] executeUpdate(String[] sql) throws Exception{
try {
if (stmt == null) {
connect(false);
}
for (int i = 0; i < sql.length; i++) {
stmt.addBatch(sql[i]);
}
int[] res = stmt.executeBatch();
conn.commit();
//close();
return res;
} catch (Exception e) {
throw e;
}
}
private static List orgResultSet4List(ResultSet rs)throws Exception{
try {
ResultSetMetaData rsmd = rs.getMetaData();
int cols = rsmd.getColumnCount();
List l = new ArrayList();
Map recordMap = null;
while (rs.next()) {
recordMap = new HashMap();
for (int i = 0; i < cols; i++) {
recordMap.put((String)(rsmd.getColumnName(i+1)).toLowerCase(),rs.getObject(i+1));
}
l.add(recordMap);
}
return l;
}
catch (Exception ex) {
//ex.printStackTrace();
throw ex;
}
}
public static void main(String[] args) {
}
}
分享到:
相关推荐
在VB.NET编程环境中,操作Access数据库是一项常见的任务,特别是在开发小型到中型企业级应用程序时。以下是一些关于如何使用VB.NET与Access数据库交互的关键知识点: 1. **ADO.NET**: ADO.NET是.NET Framework的一...
在本文中,我们将深入探讨如何使用C++的MFC(Microsoft Foundation Classes)框架与ADO(ActiveX Data Objects)在Visual Studio 2010中操作Access数据库。这是一篇适合初学者的技术指南,旨在帮助你了解如何通过...
本文介绍C#访问操作Access数据库的基础知识,并提供一个相关的例程。 1.通过ADO.NET的OleDb相关类来操作Access 主要知识点如下: using System.Data.OleDb; using System.Data; 连接字符串:String connectionString...
在这个特定的项目中,"VSTO版本局域网操作Access数据库系统.zip" 提供了一个基于VSTO的解决方案,它允许在局域网内的多用户同时操作一个Access数据库系统。 Access数据库系统是Microsoft Office套件的一部分,用于...
本例中的“简单的asp操作access例子源码”是一个针对初学者的教程,通过具体的代码实例,展示了如何使用ASP与Access数据库进行交互,完成数据的增、删、改、查(CRUD)操作。 在ASP中,我们通常使用ADO(ActiveX ...
在本示例中,"asp.net 操作 access 增删改查" 是一个初级教程,旨在帮助初学者理解如何使用ASP.NET进行数据库操作,特别是与Microsoft Access数据库交互进行基本的CRUD(创建Create、读取Read、更新Update、删除...
总的来说,C#操作Access数据库的关键步骤包括:建立连接、创建命令、执行SQL操作和处理结果。了解这些基本操作后,开发者可以根据具体需求编写更复杂的查询,实现数据的读取、插入、更新和删除功能。在实际项目中,...
描述中的"操作Access数据库源码"意味着我们要利用WPF与Access数据库进行数据交换。Access数据库是一种小型数据库管理系统,适用于个人或小团队的数据存储需求。在WPF应用中,我们通常使用ADO.NET框架来连接和操作...
在VB(Visual Basic)编程环境中,操作ACCESS数据库是一项常见的任务,尤其对于初学者而言,这是一个很好的起点来理解和实践数据库交互。以下将详细讲解如何利用VB与ACCESS数据库进行连接、查询、插入、更新和删除等...
java 操作 access数据库,供大家一起共同分享学习。
本示例将深入探讨如何使用MFC(Microsoft Foundation Classes)和Visual C++结合ADO(ActiveX Data Objects)来操作Access数据库。ADO是微软提供的一种高效、易用的数据访问接口,它允许开发者通过OLE DB技术连接到...
要让JavaScript操作Access数据库,首先你需要一个中间件或者库来建立这种连接。一种常见的方式是使用ActiveXObject,这是Internet Explorer浏览器特有的一个对象,它可以允许JavaScript与Windows操作系统中的组件...
在本文中,我们将深入探讨如何使用C#编程语言来操作Access数据库,并通过一个具体的ListView分页实例进行演示。Access数据库是Microsoft Office套件的一部分,它为小型应用提供了简单且有效的数据存储解决方案。C#,...
本实例将探讨如何使用Excel VBA操作Access数据库,实现数据的插入、修改和删除。 首先,我们需要了解基础环境。Access是一个关系型数据库管理系统,用于存储和管理结构化数据。VBA是Excel内置的编程语言,可以创建...
在本文中,我们将深入探讨如何使用MFC(Microsoft Foundation Classes)操作ACCESS数据库,这是一个常见的任务在Windows应用程序开发中。MFC是微软提供的一个C++类库,它简化了Windows API的使用,使得开发者能够更...
本实例将探讨如何利用Excel操作Access数据库,从而实现更高效的数据处理和管理。 Excel是一款优秀的电子表格软件,适合处理和分析大量数据,而Access则是一个关系型数据库管理系统,适合存储、管理和查询复杂的数据...
下面我们将详细探讨如何在VB中操作Access数据库。 首先,为了在VB中连接到Access数据库,我们需要引入ADO(ActiveX Data Objects)库。在VB工程中,点击“工具”-> “引用”,然后找到并勾选"Microsoft ActiveX ...
本例程旨在教授如何使用C#来操作ACCESS数据库,这对于初学者或希望深化数据库编程技能的开发者来说是一份宝贵的资源。 首先,要理解C#与ACCESS数据库交互的基础,我们需要引入System.Data.OleDb命名空间,它提供了...
标题 "DELPHI全操作ACCESS数据库[源码放送]" 暗示了这是一个关于使用Delphi编程语言全面操作Microsoft Access数据库的教程或资源集合。Delphi是一种强大的面向对象的编程环境,通常用于开发Windows应用程序,而...
标题 "直接通过ADO操作ACCESS数据库" 指的是在编程中使用ActiveX Data Objects (ADO) 来与Microsoft Access数据库进行交互。ADO是Microsoft提供的一个数据访问接口,它允许程序员以简单的方式处理各种数据源,包括但...