C# 动态创建Access数据库和表

1.添加com组件引用

在这里插入图片描述
//添加两个com组件引用
//Microsoft ADO Ext. 2.8 for DDL and Security
//Microsoft ActiveX Data Objects 2.8 Library

2.代码using引用

using ADOX;
using System.IO;

3.定义数据库路径和需要创建的表名

 //定义创建文件的路径--NewDb.mdb是新创建的数据库的名字
        public string path = "E:\\项目\\学习资料\\access\\DB\\NewDb.mdb";
        //定义表名
        public string name = "tomato";

4.方法

#region 创建数据库
            /// <summary>
            /// 创建access数据库
            /// </summary>
            public static void CreateAccessDb(string filePath)
            {
                ADOX.Catalog catalog = new Catalog();
                string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath;// + ";Jet OLEDB:Engine Type=5";
                if (!File.Exists(filePath))
                {
                    try
                    {
                        catalog.Create(conn);
                    }
                    catch (System.Exception ex)
                    {
                        MessageBox.Show("false");
                    }
                }
            }
 #endregion
            /// <summary>
            /// 创建表
            /// </summary>
            /// <param name="filePath"></param>
            /// <param name="tableName"></param>
            /// <param name="colums"></param>
            public static void CreateAccessTable(string filePath, string tableName, params ADOX.Column[] colums)
            {
                ADOX.Catalog catalog = new Catalog();

                #region 数据库文件不存在则创建
                if (!File.Exists(filePath))
                {
                    catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Jet OleDB:Engine Type=5");
                }
                #endregion

                //连接刚刚创建的数据库
                ADODB.Connection cn = new ADODB.Connection();
                cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" + filePath, null, null, -1);
                catalog.ActiveConnection = cn;
                
                //创建表
                ADOX.Table table = new ADOX.Table();
                table.Name = tableName;

                //循环遍历表中字段名
                foreach (var column in colums)
                {
                    table.Columns.Append(column);
                }
                catalog.Tables.Append(table);
                
                //关闭连接  
                cn.Close();

            }

5.调用

 //定义表里的字段内容
            ADOX.Column[] columns = {
                             new ADOX.Column(){Name="id",Type=DataTypeEnum.adInteger,DefinedSize=9},
                             new ADOX.Column(){Name="col1",Type=DataTypeEnum.adWChar,DefinedSize=50}
                         };
            //创建数据库
            AccessDBhelper.CreateAccessDb(path);
            //创建数据表
            AccessDBhelper.CreateAccessTable(path, name, columns);

问题

创建的时候会有“类型无效的错误”是因为,数据库引擎 Provider 只能接受已知类型的数据类型,下面是可以接受的类型对照表:
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值