C#创建ACCESS数据库和数据表

由于在程序中使用了ADOX,所以先要在解决方案中引用之,方法如下:
解决方案资源管理器-->引用-->(右键)添加引用-->COM-->Microsoft ADO Ext. 2.8 for DDL and Security
private void btnCreate_Click(object sender, EventArgs e)
{
    string dbName = "E:\\Temp\\" + DateTime.Now.Millisecond.ToString() + ".mdb";
    ADOX.CatalogClass cat = new ADOX.CatalogClass();
    cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbName + ";");
    MessageBox.Show("数据库:" + dbName + "已经创建成功!");

    //新建一个表
    ADOX.TableClass tbl = new ADOX.TableClass();
    tbl.ParentCatalog = cat;
    tbl.Name = "MyTable";

    //增加一个自动增长的字段
    ADOX.ColumnClass col = new ADOX.ColumnClass();
    col.ParentCatalog = cat;
    col.Type = ADOX.DataTypeEnum.adInteger; // 必须先设置字段类型
    col.Name = "id";
    col.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
    col.Properties["AutoIncrement"].Value = true;
    tbl.Columns.Append(col, ADOX.DataTypeEnum.adInteger, 0);

    //增加一个文本字段
    ADOX.ColumnClass col2 = new ADOX.ColumnClass();
    col2.ParentCatalog = cat;
    col2.Name = "Description";
    col2.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
    tbl.Columns.Append(col2, ADOX.DataTypeEnum.adVarChar, 25);
    cat.Tables.Append(tbl);   //这句把表加入数据库(非常重要)
    MessageBox.Show("数据库表:" + tbl.Name + "已经创建成功!");
    tbl = null;
    cat = null;
}

使用ADOX创建Access数据库和表,设置主键
 
using System;
using ADOX;

namespace WebPortal
{
    ///   <summary>   
    ///   CreateAccessDB   的摘要说明。   
    ///   对于不同版本的ADO,需要添加不同的引用   
    ///   请添加引用Microsoft   ADO   Ext.   2.7   for   DDL   and   Security   
    ///   请添加引用Microsoft   ADO   Ext.   2.8   for   DDL   and   Security   
    ///   </summary>   
    public class CreateAccessDB : System.Web.UI.Page
    {
        private void Page_Load(object sender, System.EventArgs e)
        {
            //为了方便测试,数据库名字采用比较随机的名字,以防止添加不成功时还需要重新启动IIS来删除数据库。   
            string dbName = "D:\\NewMDB" + DateTime.Now.Millisecond.ToString() + ".mdb";
            ADOX.CatalogClass cat = new ADOX.CatalogClass();
            cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=" + dbName + ";");
            Response.Write("数据库:" + dbName + "已经创建成功!");
            ADOX.TableClass tbl = new ADOX.TableClass();
            tbl.ParentCatalog = cat;
            tbl.Name = "MyTable";

            //增加一个自动增长的字段   
            ADOX.ColumnClass col = new ADOX.ColumnClass();
            col.ParentCatalog = cat;
            col.Type = ADOX.DataTypeEnum.adInteger;   //   必须先设置字段类型   
            col.Name = "id";
            col.Properties["Jet   OLEDB:Allow   Zero   Length"].Value = false;
            col.Properties["AutoIncrement"].Value = true;
            tbl.Columns.Append(col, ADOX.DataTypeEnum.adInteger, 0);

            //增加一个文本字段   
            ADOX.ColumnClass col2 = new ADOX.ColumnClass();
            col2.ParentCatalog = cat;
            col2.Name = "Description";
            col2.Properties["Jet   OLEDB:Allow   Zero   Length"].Value = false;
            tbl.Columns.Append(col2, ADOX.DataTypeEnum.adVarChar, 25);

            //设置主键   
            tbl.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "id", "", "");
            cat.Tables.Append(tbl);

            Response.Write("<br>数据库表:" + tbl.Name + "已经创建成功!");
            tbl = null;
            cat = null;
        }
        #region   Web   窗体设计器生成的代码
        override protected void OnInit(EventArgs e)
        {
            //   
            //   CODEGEN:   该调用是   ASP.NET   Web   窗体设计器所必需的。   
            //   
            InitializeComponent();
            base.OnInit(e);
        }

        ///   <summary>   
        ///   设计器支持所需的方法   -   不要使用代码编辑器修改   
        ///   此方法的内容。   
        ///   </summary>   
        private void InitializeComponent()
        {
            this.Load += new System.EventHandler(this.Page_Load);
        }
        #endregion
    }
}
posted @ 2009-06-11 14:26  迪卡.凯恩  阅读(675)  评论(0编辑  收藏  举报