zoukankan      html  css  js  c++  java
  • C#操作Access数据库(创建&修改结构)

    本文转自:http://www.cnblogs.com/liyugang/archive/2012/11/17/2775393.html

    想要在程序中控制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

  • 相关阅读:
    Data Base mysql备份与恢复
    java 乱码问题解决方案
    【知识强化】第二章 物理层 2.1 通信基础
    【知识强化】第二章 进程管理 2.2 处理机调度
    【知识强化】第二章 进程管理 2.1 进程与线程
    【知识强化】第一章 操作系统概述 1.3 操作系统的运行环境
    【知识强化】第一章 网络体系结构 1.1 数据结构的基本概念
    【知识强化】第一章 网络体系结构 1.2 计算机网络体系结构与参考模型
    【知识强化】第一章 网络体系结构 1.1 计算机网络概述
    【知识强化】第一章 操作系统概述 1.1 操作系统的基本概念
  • 原文地址:https://www.cnblogs.com/wangjiahong/p/3429537.html
Copyright © 2011-2022 走看看