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 只能接受已知类型的数据类型,下面是可以接受的类型对照表:
在这里插入图片描述

评论 8 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:撸撸猫 设计师:马嘣嘣 返回首页

打赏作者

张新玲

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值