• C#操作Access数据库(创建&修改结构)


    想要在程序中控制Access,不是数据,而是Access数据库的表结构啊,字段啊..就要用到ADOX

    所以先要在解决方案中引用之,方法如下:
    解决方案资源管理器 --> 引用 --> (右键)添加引用 --> COM --> Microsoft ADO Ext. 2.8 for DDL and Security 

    注意: <!--[endif]-->

    当创建ACCESS数据库的时候,会自动创建一个连接,为了释放.ldb文件,必须关闭这一连接。而这个连接是ADODB类的,所以很多人一直都找不到释放连接的方法。 

    方法如下: 引用 --> (右键)添加引用 --> COM --> Microsoft ActiveX Data Objects 2.8 Library

    有了这个两个COM组件后,就可以开始一系列操作啦。。。

    一.创建Access数据库

    string dbName = "E:\\Temp\\" + DateTime.Now.Millisecond.ToString() + ".mdb";//注意扩展名必须为mdb,否则不能插入表
    ADOX.CatalogClass cat = new ADOX.CatalogClass();
    cat.Create(
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + 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); //把表加入数据库(非常重要)


    五.打开修改Access数据库

    ADODB.Connection conn = new ADODB.Connection();//ADO连接对象
    conn.Open("Provider=Microsoft.Jet.OleDb.4.0;Data Source=Interop.Portal.dll"""""0);
    ADOX.CatalogClass cat = new ADOX.CatalogClass();
    cat.ActiveConnection = conn;//设置活动的连接对象


    下面的这句非常重要哦: (创建&修改都需要)

    //转换为ADO连接,并关闭
    (cat.ActiveConnection as ADODB.Connection).Close();
    cat.ActiveConnection = null;
    cat = null;

    摘自昵称:吴庆阳

      C#:
      
      <%@ Page Language="C#" %>
      
      <%@ Import Namespace="ADOX" %>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      
      <script runat="server">
       /// <summary>
       /// CreateAccessDB 的摘要说明。
       /// 对于不同版本的ADO,需要添加不同的引用
       /// 请添加引用Microsoft ADO Ext. 2.7 for DDL and Security
       /// 请添加引用Microsoft ADO Ext. 2.8 for DDL and Security
       /// </summary>
      
       protected void Page_Load(object sender, 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);
      
       //增加数字字段
       ADOX.ColumnClass col3 = new ADOX.ColumnClass();
       col3.ParentCatalog = cat;
       col3.Name = "数字";
       col3.Type = DataTypeEnum.adDouble;
       col3.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
       tbl.Columns.Append(col3, ADOX.DataTypeEnum.adDouble, 666);
      
       //增加Ole字段
       ADOX.ColumnClass col4 = new ADOX.ColumnClass();
       col4.ParentCatalog = cat;
       col4.Name = "Ole类型";
       col4.Type = DataTypeEnum.adLongVarBinary;
       col4.Properties["Jet OLEDB:Allow Zero Length"].Value = false;
       tbl.Columns.Append(col4, ADOX.DataTypeEnum.adLongVarBinary, 0);
      
      
       //设置主键
       tbl.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "id", "", "");
       cat.Tables.Append(tbl);
      
       msg.Text = ("<br>数据库表:" + tbl.Name + "已经创建成功!");
      
       System.Runtime.InteropServices.Marshal.ReleaseComObject(tbl);
       System.Runtime.InteropServices.Marshal.ReleaseComObject(cat);
       tbl = null;
       cat = null;
       GC.WaitForPendingFinalizers();
       GC.Collect();
       }
      </script>
      
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head runat="server">
       <title>在.NET框架下动态创建Access数据库和表</title>
      </head>
      <body>
       <form id="form1" runat="server">
       <asp:Label ID="msg" runat="server" />
       </form>
      </body>
      </html>

    本篇文章来源于 站长资讯网 原文链接:http://www.chinahtml.com/0612/aspnet-11664211899645.html


     

  • 相关阅读:
    虚拟化(五):vsphere高可用群集与容错(存储DRS是一种可用于将多个数据存储作为单个数据存储群集进行管理的功能)
    vmware 桌面虚拟化 horizon view 介绍(使用微软的RDP协议或vmware 专有的PCoIP协议,连接到虚拟桌面,并且可以使用本地的USB设备、本地存储)
    Delphi之萝莉调教篇
    编写自定义PE结构的程序(如何手写一个PE,高级编译器都是编译好的PE头部,例如MASM,TASM等,NASM,FASM是低级编译器.可以自定义结构)
    localStore的storage事件
    对称密码体制和非对称密码体制
    Span<T>和ValueTuple<T>性能是.Net Core非常关键的特性
    分布式高并发下Actor模型
    公众号及H5支付
    BIOS(Basic Input/Output System)是基本输入输出系统的简称
  • 原文地址:https://www.cnblogs.com/liyugang/p/2775393.html
Copyright © 2020-2023  润新知