创建ACCESS数据库,并且创建表和数据。重点:关闭ACCESS数据库引用

 /// <summary>
        /// 创建ACCESS数据库,并且创建表和数据
        /// </summary>
        /// <param name="dictTable"></param>
        /// <param name="filePath"></param>
        /// <returns></returns>
        public int DataTableToAccess(Dictionary<string, DataTable> dictTable, string filePath)
        {
            int count = 0;
            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, -1);
                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)
                    {
                        table.Columns.Append(c.ColumnName, DataTypeEnum.adLongVarWChar);
                    }
                    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;
            }
            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 - 1, 1);
                sbColumns.Append(")");

                foreach (DataRow row in item.Value.Rows)
                {
                    sbValues.Append(sbColumns.ToString());
                    sbValues.Append("values( ");
                    foreach (DataColumn c in item.Value.Columns)
                    {
                        sbValues.Append("‘" + CommUtils.DtRowFilter(row[c.ColumnName] + "") + "‘,");
                    }
                    sbValues.Remove(sbValues.Length - 1, 1);
                    sbValues.Append(");");
                    sbValues.AppendLine("");
                    //using (DBHelperAccess access = new DBHelperAccess(connStr))
                    //{
                    DBHelperAccess access = new DBHelperAccess(connStr);
                    //DBHelperAccess access = new DBHelperAccess(connStr);

                    access.ExecuteSQLNonquery(sbValues.ToString());
                    access.Conn.Dispose();
                    access = null;
                    //}
                    sbValues.Clear();
                }
                GC.Collect();
            }
            return count;
        }
时间: 2024-08-24 01:23:01

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

将A数据库的某个表的数据导入到B数据库的一张表中

首先  A ,B两个表的表结构相同 如: 将 oa库的MP_CMSPlan表的数据插入到 rrb36520150318 库的 MP_CMSPlan表 在Master下新建查询 执行以下代码 insert into [rrb36520150318] .[dbo] .[MP_CMSPlan]( [cmsId] ,[planContent] ,[doneTime] ,[doneDesc]) select [cmsId] ,[planContent] ,[doneTime] ,[doneDesc]fro

计算数据库中各个表的数据量和每行记录所占用空间--添加架构信息-读后感及知识整理

参考文章: SQL Server 游标运用:查看一个数据库所有表大小信息(Sizes of All Tables in a Database) 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 监控SQLServer 数据库表每天的空间变化情况 仔细拜读上面三位的文章,不会的知识点又参考了MSDN,巩固了知识点如下: 知识点: 1.表的架构信息,涉及的系统对象 sys.schemas 和 INFORMATION_SCHEMA.TABLES,但后者不是官方推荐方式,

不同数据库之间复制表的数据的方法

--不同数据库之间复制表的数据的方法: --当表目标表存在时: insert into 目的数据库..表 select * from 源数据库..表 --当目标表不存在时: select * into 目的数据库..表 from 源数据库..表 --如果在不同的SQL之间: insert into openrowset('sqloledb','目的服务器名';'sa';'',目的数据库.dbo.表) select * from 源数据库..表

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

1 private void FormLugOther_Load(object sender, EventArgs e) 2 { 3 foreach (string str in FormLug.FieldListLug1) 4 { 5 try 6 { 7 Label label = new Label(); 8 label.Text = str; 9 this.tableLayoutPanel1.Controls.Add(label); 10 TextBox textbox = new Tex

在A数据库的a表中创建触发器,往a表插入数据的话,将数据转移至B数据库中的a表

EXEC sp_addlinkedserver @server='cqq',--被访问的服务器别名(习惯上直接使用目标服务器IP,或取个别名如:JOY) @srvproduct='ms', @provider='SQLOLEDB', @datasrc='172.18.5.9' --要访问的服务器 EXEC sp_addlinkedsrvlogin @rmtsrvname='cqq', --被访问的服务器别名(如果上面sp_addlinkedserver中使用别名JOY,则这里也是JOY) @us

SQL查看数据库中每张表的数据量和总数据量

查看所有表对应的数据量 SELECT a.name AS 表名, MAX(b.rows) AS 记录条数 FROM sys.sysobjects AS a INNER JOIN sys.sysindexes AS b ON a.id = b.id WHERE (a.xtype = 'u') GROUP BY a.name ORDER BY 记录条数 DESC 查看数据库的总数据量 SELECT SUM(记录条数) AS 总记录数 FROM (SELECT TOP (10000) a.name A

SQL 清除数据库中所有表的数据

进行数据库的操作,有时候我们需要清除数据库中所有的数据,如果你不嫌麻烦,可以一次一次的执行truncate操作,但是如果遇到有无数个表的情况,这种操作无疑是很耗时的 我曾经百度别人的代码,看都没看就直接复制粘贴执行,结果,全部drop掉了,并且没有备份数据库,一首凉凉送给自己,所以,在此警告各位朋友,一定要看清了代码再执行,一定一定要随时做好数据备份,不然,你懂的 下面附上我的代码(也是百度的) declare c cursor for select NAME from sysobjects w

如何查询mysql数据库中哪些表的数据量最大

1.mysql的information_schema下有存储数据库基本信息的数据字典表,可以通过查询tables表来获得 所需要的表相关信息.  mysql> show databases; 2. use  information_schema; 3. show tables; 4. desc tables; 5 select table_name,table_rows from  tables order by table_rows desc limi 10;

sql server 2008 删除数据库中所有表的数据

if exists (select * from sysobjects where type='P' and name=N'P_DeleteAllData' )    drop procedure P_DeleteAllDatagoCREATE PROCEDURE P_DeleteAllDataas    EXEC sp_MSforeachtable  'ALTER TABLE ? NOCHECK CONSTRAINT ALL' --禁用约束    EXEC sp_MSforeachtable 

sql server 清除数据库中所有表的数据

CREATE PROCEDURE sp_DeleteAllData AS EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'--禁用约束 EXEC sp_MSForEachTable 'ALTER TABLE ? DISABLE TRIGGER ALL'--禁用触发器 EXEC sp_MSForEachTable 'DELETE FROM ?'--清数据 EXEC sp_MSForEachTable 'ALTER TABLE