下面是近期学习C#连接MDB数据库,通过路径创建MDB数据库,根据名字创建创建对用MDB数据库中的表格,再通过DataTable创建一致的表并将数据放入,,,这是一个类,用完之后记得用Close()方法。

运行环境:x86

添加引用: 目的是//创建Catalog目录类
                  ADOX.CatalogClass catalog = new ADOX.CatalogClass();

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.IO;
using System.Windows.Forms;
using ADOX;namespace DataHandle
{public class MdbHelper{private OleDbConnection myConn;private CatalogClass createCatalog;public string[] GetTablename(){DataTable dt = myConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });string[] Tablename = new string[dt.Rows.Count];for (int i = 0; i < dt.Rows.Count; i++){Tablename[i] = dt.Rows[i].ItemArray[2].ToString();}return Tablename;}public MdbHelper() {}public MdbHelper(string address){try{//创建一个 OleDbConnection对象string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + address;myConn = new OleDbConnection(strCon);myConn.Open();}catch (Exception ex){ex.ToString();}}/// <summary>/// 打开mdb/// </summary>/// <param name="address">mdb路径</param>public void OpenMDB(string address) {try{//创建一个 OleDbConnection对象string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + address;myConn = new OleDbConnection(strCon);myConn.Open();}catch (Exception ex){ex.ToString();}}/// <summary>/// 连接数据库/// </summary>/// <param name = "tableName" ></ param >/// < param name="isClose"></param>/// <returns></returns>public DataTable GetTable(string tableName){//创建一个 DataSet对象DataTable dt = new DataTable();try{myConn.Open();string strCom = string.Format("select * from {0}", tableName);OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);myCommand.Fill(dt, tableName);myConn.Close();}catch (Exception ex){ex.ToString();}return dt;}/// <summary>/// 获取数据库内的所有表的名称/// </summary>/// <returns></returns>public DataTable GetTable(){DataTable dt = myConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });string[] Tablename = new string[dt.Rows.Count];for (int i = 0; i < dt.Rows.Count; i++){Tablename[i] = dt.Rows[i].ItemArray[2].ToString();}return strArrayToTable(Tablename);}/// <summary>/// 数组转据表/// </summary>/// <param name = "strArray" ></ param >/// < returns ></ returns >public DataTable strArrayToTable(string[] strArray){//数组 转 数据表DataTableDataTable dt = new DataTable();dt.Columns.Add("Name", typeof(string));for (int i = 0; i < strArray.Length; i++){DataRow dr = dt.NewRow();dr["name"] = strArray[i];dt.Rows.Add(dr);}return dt;}/// <summary>/// 关闭数据连接/// </summary>public void CloseConnection(){myConn.Close();}/// <summary>/// 创建一个类型和datatable一致的空表/// </summary>/// <param name="tableName"></param>public void CreateTable(string tableName,DataTable dt){string sql = "create table " + tableName;string tableAttribute = "";for (int i = 0; i < dt.Columns.Count; i++){tableAttribute = tableAttribute + dt.Columns[i].ColumnName + " " + GetType(dt.Columns[i].DataType.ToString());if (i < dt.Columns.Count - 1){tableAttribute = tableAttribute + ",";}}sql = sql + "(" + tableAttribute + ");";OleDbCommand cmd = new OleDbCommand(sql, myConn);cmd.ExecuteNonQuery();}/// <summary>/// 将datatable导入对应名字的表中/// </summary>/// <param name="path"></param>/// <param name="name"></param>/// <param name="dt"></param>public  void DatatableToMdb(string name,DataTable dt){try{string strCom = string.Format("select * from {0}", name);OleDbDataAdapter da = new OleDbDataAdapter(strCom, myConn);//****OleDbCommandBuilder cb = new OleDbCommandBuilder(da);//这里的CommandBuilder对象一定不要忘了,一般就是写在DataAdapter定义的后面cb.QuotePrefix = "[";cb.QuoteSuffix = "]";DataSet midData = new DataSet();da.Fill(midData, name);foreach (DataRow dR in dt.Rows){DataRow dr = midData.Tables[name].NewRow();dr.ItemArray = dR.ItemArray;//行复制midData.Tables[name].Rows.Add(dr);}//helper.OfficeHelper.ExcelHelper.DataTableCSV(midData.Tables[name], @"E:\PR\CQYB\MDB\"+name+".csv");da.Update(midData,name);}catch (Exception ex){throw;}}/// <summary>/// 获取创建mdb表格的属性字段类型/// </summary>/// <param name="datatype"></param>/// <returns></returns>private string GetType(string datatype){switch (datatype)//匹配类型选择{case "System.String":return "TEXT(255)";case "System.DateTime":return "DateTime";case "System.Double":return "Double";case "System.Int32":case "System.Int16":case "System.Int64":return "Int";default:return "TEXT(50)";        }}/// <summary>/// 创建Access数据库/// </summary>/// <param name="path">文件和文件路径</param>/// <returns>真为创建成功,假为创建失败或是文件已存在</returns>public bool CreateAccessDatabase(string path){//如果文件存在反回假if (File.Exists(path)){MessageBox.Show("文件已存在!");return false;}try{//如果目录不存在,则创建目录string dirName = Path.GetDirectoryName(path);if (!Directory.Exists(dirName)){Directory.CreateDirectory(dirName);}//创建Catalog目录类ADOX.CatalogClass catalog = new ADOX.CatalogClass();string _connectionStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + path+ ";";//根据联结字符串使用Jet数据库引擎创建数据库catalog.Create(_connectionStr);return true;}catch (Exception){throw new Exception("数据库创建失败!");}}/// <summary>/// 创建数据表/// </summary>/// <param name="tableName"></param>/// <param name="dt"></param>public void CreateAccessTable(string tableName,DataTable dt){Table table = new Table();table.ParentCatalog = createCatalog;table.Name = tableName;foreach (DataColumn column in dt.Columns){ColumnClass col = new ColumnClass();col.ParentCatalog = createCatalog;col.Name = column.ColumnName;col.Attributes = ColumnAttributesEnum.adColNullable; //允许空值var type = GetDataColType(column.DataType.ToString());table.Columns.Append(col, type); //默认数据类型和字段大小}createCatalog.Tables.Append(table);}/// <summary>/// 获取数据类型/// </summary>/// <param name="typeName"></param>/// <returns></returns>public DataTypeEnum GetDataColType(string typeName){switch (typeName)//匹配类型选择{case "System.String":return DataTypeEnum.adVarChar;case "System.DateTime":return DataTypeEnum.adDBDate;case "System.Double":return DataTypeEnum.adDouble;case "System.Int32":case "System.Int16":case "System.Int64":return DataTypeEnum.adInteger;default:return DataTypeEnum.adVarChar;}}}}

C#创建MDB数据库、并存放表格数据相关推荐

  1. C# 创建MDB数据库、并存放表格数据的案例

    下面是近期学习C#连接MDB数据库,通过路径创建MDB数据库,根据名字创建创建对用MDB数据库中的表格,再通过DataTable创建一致的表并将数据放入,这是一个类,用完之后记得用Close()方法. ...

  2. C# 创建Excel,读取mdb数据库,写入Excel数据,获取mdb中所有表格名字,选择多个文件

    C# 创建Excel,读取mdb数据库,写入Excel数据,获取mdb中所有表格名字,选择多个文件 1.创建Excel表 使用OleDbCommand类执行SQL语句即可,代码如下 /// <s ...

  3. VS用SSIS实现SQL Server数据库与Excel表格数据的相互导入

    VS用SSIS实现SQL Server数据库与Excel表格数据的相互导入 打开Visual Studio 2019,新建Integration Services项目 拖一个数据流任务到控制流中 切换 ...

  4. wps怎么导入access_mysql数据库中的表格数据如何导入wps中的excel,请问该怎么去做 | excel连接access数据库...

    怎么把excel文件里的数据导入SQL数据库? 导据不一定要用OPENSET函数以用更简单的方法,步骤如下: 1.双击打sqlserver,右击需要导入数据的数据库,如图所示. 2.点击任务,再点击任 ...

  5. 使用QxEntityEditor创建mdb数据库实体

    一.配置本地ODBC 1.本地搜索ODBC数据源管理器,打开后点击添加按钮. 2.创作新数据源选择*.mdb,*.accdb类型.点击完成, 3.输入数据源名,选择数据库. 4.选择要导入的mdb数据 ...

  6. vbs创建mysql数据库_vbs生成ACCESS数据里所有表的字段

    vbs生成ACCESS数据里所有表的字段 更新时间:2008年06月25日 08:38:32   作者: 生成ACCESS数据库里所有表及所有字段并生成一定格式的字符组合 databasename = ...

  7. 通过Navicat创建MySQL数据库并倒入表数据的两种方式

    方式一:通过图形界面(Navicat)进行创建 创建数据库 1.首先建立MySQL数据库连接 2. 然后创建一个数据库 导入表结构(资料/数据模型/sql文件) 1.首先打开数据库 2.然后执行sql ...

  8. 引擎: 决定数据库存取数据的方式 = 不同的特点 = 不同的用户体验 数据类型: 规定了数据库可以存放哪些数据 约束: 限制存储数据的规则 键...

    Microsoft Windows [版本 10.0.17134.472] (c) 2018 Microsoft Corporation.保留所有权利. C:\Users\Administrator& ...

  9. 手动建库:按标准快速创建MDB数据库,快速创建Arcgis数据库。

    如果你是地理信息内业人员,有可能会有需要数据入库的工作.一般而言有点规模的项目都有建库软件,不需要犯愁"建库"这一步. 但是有些小活儿或者地方性规范的项目,并没有多么现成工具给你往 ...

最新文章

  1. 用命令行操作 VirtualBox 和 SGD
  2. Acwing第 2 场周赛【完结】
  3. linux之如何复制文件夹所有文件到其它文件夹
  4. UE4多线程任务系统详解
  5. div table 超出了_div包裹的table,table的宽度超出了的宽度,出现的滚动条的在windows下无法拖动...
  6. 初探在容器上构建持续部署!
  7. 【钢带厚度预测】基于matlab模拟退火遗传算法优化BP神经网络钢带厚度预测【含Matlab源码 1285期】
  8. 【原创】《管理的实践》阅读有感
  9. php处理excel里面的重复数据,Excel导入时,跳过重复数据,并提示重复数据数量与明细...
  10. 扣哒世界入选第33届国际信息学奥赛IOI专项赛
  11. 微信html5 支付接口,黄聪:详解申请微信h5支付方法,开通微信h5网页支付接口(转)...
  12. JAVA毕业设计科研成果管理系统设计与实现计算机源码+lw文档+系统+调试部署+数据库
  13. Android知识点原理总结
  14. 微信小程序商城 (后台JAVA)
  15. OpenCV相关操作(cv2) (python)
  16. Java对象转xml
  17. KD tree (K dimensional tree)多维空间搜索 近邻
  18. 扭矩大好还是马力大好_马力大和扭矩大哪个更重要,马力和扭矩详解
  19. win7 php mysql环境,在win7下搭建php+apache+mysql环境
  20. 统考英语和计算机可以插u盘吗,英语B统考前用U盘里面的文件复制到机考电脑上会被抓到吗...

热门文章

  1. FT232USB串口通信线序
  2. 2011分区联赛模拟试题 电子眼
  3. 关于VS2013/VS2019使用scanf函数等报错的解决方案
  4. 工程图学及计算机绘图第二版答案,工程图学及计算机绘图: 非机类
  5. 简述分类法的优缺点_自由分类法的优缺点
  6. 有这么五种人不适合学编程!
  7. 【已解决】latex析取/合取/蕴含连接词如何打
  8. WPS本地表格数据粘贴到钉钉在线表格
  9. oracle表分区以及优缺点
  10. 水经注在《宁夏清水湾小流域治理》工程项目中的应用案例