本文转自: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

C#操作Access数据库(创建&修改结构)的更多相关文章

  1. MFC通过ADO操作Access数据库

    我在<VC知识库在线杂志>第十四期和第十五期上曾发表了两篇文章——“直接通过ODBC读.写Excel表格文件”和“直接通过DAO读.写Access文件”,先后给大家介绍了ODBC和DAO两 ...

  2. 直接通过ADO操作Access数据库

    我在<VC知识库在线杂志>第十四期和第十五期上曾发表了两篇文章——“直接通过ODBC读.写Excel表格文件”和“直接通过DAO读.写Access文件”,先后给大家介绍了ODBC和DAO两 ...

  3. 基于指纹考勤机的真实的PHP操作Access数据库成功案例(最终实现) 2011-11-2v

    听了我的建议,我们单位的食堂准备使用一台指纹考勤机统计吃饭人次,这样院里好给食堂的承包人以相应饭补.以前买过一台彩屏指纹机,数据库是access的,今儿又买了一台准备放到食堂里,而且考虑到停电,还特地 ...

  4. JavaScript操作数据库JS操作Access数据库

    avaScript操作数据库JS操作Access数据库,跟其他语言操作差不多,总结了一下习惯代码,仅供参考学习.现在在F盘有文件abc.mdf,表名为Student,一共2个字段,Id数字类型主键,s ...

  5. Python操作Access数据库

    我们在这篇文章中公分了五个步骤详细分析了Python操作Access数据库的相关方法,希望可以给又需要的朋友们带来一些帮助. AD: Python编 程语言的出现,带给开发人员非常大的好处.我们可以利 ...

  6. 关于操作Access数据库jdk选择问题

    关于操作Access数据库,使用jdk64位无法通过ODBC无法获取数据,只能通过jdk32位进行开发.

  7. 42.QT-QSqlQuery类操作SQLite数据库(创建、查询、删除、修改)详解

    Qt 提供了 QtSql 模块来提供平台独立的基于 SQL 的数据库操作.这里我们所说的“平台 独立”,既包括操作系统平台,也包括各个数据库平台,Qt支持以下几种数据库: QT自带SQLITE数据库, ...

  8. Linux 操作mysql数据库 创建库 导入、删除表

    确保线上的运行数据库是不可避免的本人小白,因公司上线没有办法自己去整服务器,深刻体会到服务器大神的霸气,所以为了增加记忆,服务广大员友记录一下 linux mysql 忘记root的密码无法登陆进my ...

  9. System.Data.OleDb操作access数据库类,【bubuko.com】

    access数据库在应用了System.Data.OleDb后操作会很方便,这是一个常用的数据库操作类,其中两个方法,一个是返回datatable的,一个是执行sql语句返回影响记录的(一般是inse ...

随机推荐

  1. iOS开发之Xcode 6 国际化

    Xcode6 国际化 (1) 新建一个Single View app模版项目,命名为LocalizationTest 1.建立strings文件,命名为Localization.strings 2.点 ...

  2. jquery定位

    1.$("div").offset().left ; div到文档的左距离(offset() 方法返回或设置匹配元素相对于文档的偏移) $("div").off ...

  3. ajax发布评论 、显示评论

    <!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8&qu ...

  4. D3.js 弦图的制作

    这是一种用于描述节点之间联系的图表. 1. 弦图是什么 弦图(Chord),主要用于表示两个节点之间的联系. 两点之间的连线,表示谁和谁具有联系: 线的粗细表示权重: 2. 数据 初始数据为: var ...

  5. 自定义MVC Html

    自定义ASP.NET MVC Html辅助方法 在ASP.NET MVC中,Html辅助方法给我们程序员带来很多方便,其重要性也就不言自明.有时候,我们不想重复地写一些HTML代码,或者MS没有提供我 ...

  6. Spring多数据源的配置和使用

    1. 配置多个数据源 最近开发一个数据同步的小功能,需要从A主机的Oracle数据库中把数据同步到B主机的Oracle库中.当然能够用dmp脚本或者SQL脚本是最好,但是对于两边异构的表结构来说,直接 ...

  7. CSS3学习笔记之属性值

    font-family 设置文本的字体名称. font-style 设置文本样式. 取值 normal不使用斜体. italic使用斜体. oblique使用倾斜体. inherit从父元素继承. f ...

  8. angular-file-upload 中文API

    github地址: https://github.com/nervgh/angular-file-upload Directives(指令) nv-file-drop <!-- 最少配置 --& ...

  9. 百度编辑器 无法获取post过去的值

    如果你的,表单form是套用 table的话,请一下,要把 form 放在table的最外面.否则获取不到post值

  10. [ 转]Android快速开发–使用ORMLite操作数据库

    OrmLite是一个数据库操作辅助的开源框架,主要面向Java语言.在Android面向数据库开发中,是一个比较流行的开源框架,方便操作而且功能强大,今天来学习一下,最近的项目中也有所涉及,写个博客来 ...