/// <summary>
/// 创建ACCESS数据库,并且创建表和数据
/// </summary>
/// <param name="dictTable"></param>
/// <param name="filePath"></param>
/// <returns></returns>
public int DataTableToAccess(Dictionary<string, DataTable> dictTable, string filePath)
{
int count = ;
string connStr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Jet OLEDB:Engine Type=5", filePath);
try
{
ADOX.Catalog catalog = new ADOX.Catalog();
catalog.Create(connStr); //创建ACCESS数据库 ADODB.Connection cn = new ADODB.Connection();
cn.Open(connStr, null, null, -);
catalog.ActiveConnection = cn;
foreach (var item in dictTable)
{
ADOX.Table table = new ADOX.Table();
table.Name = item.Key;
foreach (DataColumn c in item.Value.Columns)
{
ADOX.Column column = new ADOX.Column();
column.ParentCatalog = catalog;
column.Name = c.ColumnName;
column.Type = DataTypeEnum.adLongVarWChar;
//column.DefinedSize = 9;
column.Attributes = ColumnAttributesEnum.adColNullable; //允许列有NULL值
table.Columns.Append(column);
}
catalog.Tables.Append(table);
}
#region 释放COM引用的对象 【该代码块在Release模式下运行有效】
System.Runtime.InteropServices.Marshal.ReleaseComObject(catalog);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(catalog);
catalog = null;
cn.Close();
GC.WaitForPendingFinalizers();
GC.Collect();
#endregion
}
catch (Exception ex)
{
throw ex;
} ArrayList array = new ArrayList();
foreach (var item in dictTable)
{
StringBuilder sbColumns = new StringBuilder();
StringBuilder sbValues = new StringBuilder();
sbColumns.Append("insert into [" + item.Key + "](");
foreach (DataColumn c in item.Value.Columns)
{
sbColumns.Append("[" + c.ColumnName + "],");
}
sbColumns.Remove(sbColumns.Length - , );
sbColumns.Append(")"); foreach (DataRow row in item.Value.Rows)
{
sbValues.Append(sbColumns.ToString());
sbValues.Append("values( ");
foreach (DataColumn c in item.Value.Columns)
{
if (row[c.ColumnName] == DBNull.Value)
{
sbValues.Append("NULL,");
}
else
{
sbValues.Append("'" + CommUtils.DtRowFilter(row[c.ColumnName] + "") + "',");
}
}
sbValues.Remove(sbValues.Length - , );
sbValues.Append(");");
array.Add(sbValues.ToString()); sbValues.Clear();
}
} DBHelperAccess access = new DBHelperAccess(connStr);
access.ExecuteSqlTran(array);
access.Conn.Dispose();
access = null;
return count;
}

创建ACCESS数据库,并且创建表和数据。重点:关闭ACCESS数据库引用的更多相关文章

  1. SQL SERVER 将一个数据库中的表和数据复制到另一个数据库中

    第一种情况:将A数据库.dbo.A表的数据追加到B数据库.dbo.B表中 (条件:此时B数据库中已创建好了B表) insert into B数据库.dbo.B表 select * from A数据库. ...

  2. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  3. (转)分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  4. Oracle数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/QQ578473688/article/details/54561397 思路1:采用备份表 备份表中 ...

  5. SQL Server 跨服务器 不同数据库之间复制表的数据

    不同数据库之间复制表的数据的方法: 当表目标表存在时: insert into 目的数据库..表 select * from 源数据库..表 当目标表不存在时: select * into 目的数据库 ...

  6. SQLServer清空数据库中所有表的数据

    今早同事跟进客户反馈的问题时,提了个要求,要求清空数据库中所有表的数据. 记得之前用游标遍历所有的表名 + exec 动态语句 truncate table 表名 实现过这个功能. 网上搜了下,有更简 ...

  7. 将MySQL一张表的数据迁移到MongoDB数据库的Java代码示例

    Java代码: package com.zifeiy.snowflake.handle.etl.mongodb; import java.sql.Connection; import java.sql ...

  8. c#中动态创建textbox并且从数据库中获取表中数据添加到textbox中

    private void FormLugOther_Load(object sender, EventArgs e) { foreach (string str in FormLug.FieldLis ...

  9. SQLSERVER:计算数据库中各个表的数据量和每行记录所占用空间

    转:http://www.cnblogs.com/lyhabc/p/3828496.html CREATE TABLE #tablespaceinfo ( nameinfo ) , rowsinfo ...

  10. C#中 分层 显示数据库中多表的数据信息

    如下图,要实现将三个表中的内容加载到同一个窗体中,该怎么来实现呢? 要实现上面的查询结果,我们就要从Student表中拿到学生姓名,从Subject表中拿到科目名称,从StudentResult表中拿 ...

随机推荐

  1. Codeforces 2016 ACM Amman Collegiate Programming Contest B. The Little Match Girl(贪心)

    传送门 Description Using at most 7 matchsticks, you can draw any of the 10 digits as in the following p ...

  2. JDK安装,环境配置

    在安装完jdk后,还需要对jdk的环境变量进行配置才能正常使用 1.右键选择 计算机→属性→高级系统设置→高级→环境变量 2.系统变量→新建 变量名:JAVA_HOME 变量值:(变量值填写你的jdk ...

  3. 基于 Arduino 的 RFID 识别实验

    http://www.it165.net/embed/html/201512/3287.html 2015年12月04日(周五) 上午  博士的智能卡实验--RFID识别实验,基于51单片机: 我们的 ...

  4. excel学习

    制作打钩方格 :输入R ,然后选中R,在字体中选中wingdings 2即可 快速选中一列:选中两行以上,然后Ctrl+Shift+下 分段显示手机号:选中单元格,Ctrl+1,然后选中数字,自定义, ...

  5. HBase中批量修改

    先随便写写..做个随笔记录 使用Rest连接操作Hbase.. 是微软提供的  Microsoft.Hbase.Client 类库.. 版本是0.4.1.0 一直知道   client.StoreCe ...

  6. jQuery1.11源码分析(1)-----Sizzle源码概览[原创]

    最近在啃jQuery1.11源码,上来就遇到Sizzle这个jQuery的大核心,虽然已经清楚了Sizzle的用途,先绕过去也没事,但明知山有虎偏向虎山行才是我们要做的. 本文面向的阅读对象:正在学习 ...

  7. 为C#自定义控件添加自定义事件

    这里的自定义控件是由普通控件组合而成的. 希望事件响应代码推迟到使用自定义控件的窗体里写. 步骤一:新建一个用户控件,放两个按钮,Tag分别是btn1,btn2. 这两个按钮的共用单击事件处理代码如下 ...

  8. C#基本工具代码

    1.下载Xlsx public static void TryToDisplayGeneratedFileXlsx(string writeFilePath, string fileName) { H ...

  9. discuz上传图片提示附件文件无法保存

    两个可能: 1. 服务器文件夹权限不足 discuz附件保存在./data/attachments下,data文件夹的属性要求必须为777 #cd到data的上一级目录然后执行: data 2. 附件 ...

  10. 腾讯QQ形象18年变迁史,最早的QQ企鹅形象居然长这样!

    1999年,腾讯创建之初,这是当时QQ的形象,现在看起来很滑稽,又高又瘦.当时公司并没有专职的设计师,所以这个形象就凑合着用了. 后来,腾讯也觉着上一个形象做的不是特别好,于是在2000年的时候,公司 ...