码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2016-09-27 11:46:38      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:

 /// <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;
        }

 

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

标签:

原文地址:http://www.cnblogs.com/vincentvoid/p/5912150.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!