无需安装access用C#创建数据库,创建表

1 篇文章 0 订阅

首先引用msadox.dll和msjro.dll(C:\Program Files\Common Files\System\ado\),msjro.dll可以从网上下载,然后引用

using ADOX;
using JRO;
using System.IO;

然后编写相关函数

   /// <summary>
        /// 创建数据库
        /// </summary>
        /// <param name="mdbPath">路径</param>
        public void Create(string mdbPath)
        {
            if (File.Exists(mdbPath)) //检查数据库是否已存在   
            {
                throw new Exception("目标数据库已存在,无法创建");
            }
            // 可以加上密码,这样创建后的数据库必须输入密码后才能打开   

            mdbPath = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath;
            // 创建一个CatalogClass对象的实例,   

            ADOX.CatalogClass cat = new ADOX.CatalogClass();

            // 使用CatalogClass对象的Create方法创建ACCESS数据库   

            cat.Create(mdbPath);

            //创建数据库后关闭连接
            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat.ActiveConnection);
            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat);
        }
        /// <summary>
        /// 连接数据库
        /// </summary>
        /// <param name="filename">文件名包含路径</param>
        /// <returns>返回连接字符串</returns>
        public ADODB.Connection Connection(string filename)
        {
            ADODB.Connection con = new ADODB.Connection();
            con.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+filename, null, null, -1);
           
            return con;
            
            
        }
        /// <summary>
        /// 创建数据表
        /// </summary>
        /// <param name="con">连接字符串</param>
        /// <param name="table_name">表的名称</param>
        /// <param name="column">字段</param>
        public void CreateTable(ADODB.Connection con,string table_name,params Column[] column)
        {
            CatalogClass cat = new CatalogClass();
            cat.ActiveConnection = con;
            Table table = new Table();

            Column col = new Column();
            col.ParentCatalog = cat;
            col.Type = DataTypeEnum.adInteger;
            col.Name = "ID";
            col.DefinedSize = 9;
            col.Properties["AutoIncrement"].Value = true;

            table.Columns.Append(col, DataTypeEnum.adInteger, 9);
            table.Keys.Append("FirstPrimaryKey",KeyTypeEnum.adKeyPrimary,col, null, null);
            table.Name = table_name;
            foreach (Column item in column)
            {
                table.Columns.Append(item);
            }
            cat.Tables.Append(table);
            //创建数据库后关闭连接
            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat.ActiveConnection);
            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(cat);
        }


示例:

private void button1_Click(object sender, EventArgs e)
        {
            Create(Path.Combine(Application.StartupPath, "test.mdb"));
            Column col=new Column();
            col.Name="Name";
            col.Type=DataTypeEnum.adVarWChar;
            col.DefinedSize=50;
            CreateTable(Connection(Path.Combine(Application.StartupPath, "test.mdb")),"testtable", col);
        }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值