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

Posted Vincent_void

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建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;
        }

 

以上是关于创建ACCESS数据库,并且创建表和数据。重点:关闭ACCESS数据库引用的主要内容,如果未能解决你的问题,请参考以下文章

使用动态布局在 MS Access 中生成报告

Mysql:我想创建一个触发器,它将基于员工表和类别表将数据插入用户访问权限表

执行 SQL 脚本以创建表和行

HSQLDB:内存表和数据丢失

ACCESS 创建菜单下的sharepoint列表是啥作用?如何使用?

在access中如何创建外键?