/// <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. 【CityHunter】Unity3D设计AR探索模式

    为了增加游戏的乐趣性,我对项目进行了Unity3D的引入,经过一番折腾,终于做出了一个基本的AR探索模式的基本雏形. 途中的小方块就是虚拟物体,因为是静态图片,所以也不能看出什么来,只能文字形容一下: ...

  2. IP地址,子网掩码、默认网关,DNS服务器是什么意思?

    (一)  问题解析001.   问:  IP地址,子网掩码,默认网关,DNS服务器,有什么区别呀?我知道没有IP地址就不能上网,我也知道没设DNS就不能上外网,可它们都有什么功能,有什么区别呢?还有真 ...

  3. .net core

  4. sqlpuls基本命令

    1.直接敲sqlplus并回车就是启动SQL*PLUS,输入user及password将使用户登陆到缺省的数据库.2.sqlplus user/password@SERVICE_NAME 将连接到指定 ...

  5. [NHibernate]条件查询Criteria Query

    目录 写在前面 文档与系列文章 条件查询 一个例子 总结 写在前面 上篇文章介绍了HQL查询,我个人觉得使用ORM框架就是为了让少些sql,提高开发效率,而再使用HQL就好像还是使用sql,就觉得有点 ...

  6. 日期控件jsdate用法注意事项

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. Swift3.0P1 语法指南——控制流

    原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ...

  8. git实践

    撤销提交 根据–soft –mixed –hard,会对working tree和index和HEAD进行重置: git reset –mixed:此为默认方式,不带任何参数的git reset,即时 ...

  9. 04OC之分类Category,协议Protocol,Copy,代码块block

    一.Protocol协议 我们都知道,在C#有个规范称之为接口,就是规范一系列的行为,事物.在C#中是使用Interface关键字来声明一个接口的,但是在OC中interface是用来声明类,所以用了 ...

  10. DPM算法源程序voc-release5在Windows中的配置修改过程

    最近的<视频处理与分析>课程中有一个大作业,是有关DPM物体检测算法的.网上有DPM的源代码,但是原版只能在Linux或Mac上运行,而我的电脑是Windows系统,于是在网上搜了一下在怎 ...