C# 创建表ACCESS表,添加修改字段

摘要:
=============================================C#操作Access数据库希望控制程序中的Access。它不是数据,而是Access数据库的表结构和字段。将使用ADOX。因此,必须首先在解决方案中引用它。方法如下:Solution Explorer--˃Reference--˃(右键单击)Add Reference--˃COM--˃MicrosoftADOExt.2.8forDDLandSecurity注意:创建ACCESS数据库时,将自动创建连接。为了释放。ldb文件,必须关闭此连接。

最开始以为access 修改字段信息,用 ALTER TABLE 语句就可以了,

打开access 文件执行了

ALTER TABLE user ALTER COLUMN address TEXT(10)

发现可以运行,于是乎,就用C#链接 数据库 OleDbConnection,OleDbCommand 去执行,可是字符串一模一样。 就是执行报错提示  ALTER TABLE 语法错误.

http://www.accessoft.com/article-show.asp?id=929

https://support.microsoft.com/zh-cn/office/alter-table-%E8%AF%AD%E5%8F%A5-81d241e3-1522-4103-acf0-9857888d581c

C# 创建表ACCESS表,添加修改字段第1张

既然说用DAO create方法。

============================================================

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

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


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

注意:

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

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

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

C# 创建表ACCESS表,添加修改字段第2张

一.创建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 + ";");

二.建立连接使用已有数据表

        ADODB.Connection conn = new ADODB.Connection();
        conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DB/MarketDB.mdb", null, null, -1);
        ADOX.Catalog catalog = new ADOX.Catalog();
        catalog.ActiveConnection = conn;
        ADOX.Table table = catalog.Tables["user"];

三.建立一个数据表

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); //把表加入数据库(非常重要)

六:关闭

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

附件:代码

/// <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(); 
   } 

转: https://blog.csdn.net/xiatiancc/article/details/80405232

https://www.cnblogs.com/lanyubaicl/p/10102032.html

https://blog.csdn.net/hit_why/article/details/53435984

免责声明:文章转载自《C# 创建表ACCESS表,添加修改字段》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇抓取Android应用的log7-15 删除重复字符下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

access数据库删除两个日期之间 的数据 SQL语句

sql2005中sql语句为 DELETE FROM table WHERE ([date] BETWEEN '2011 - 9 - 19 0 : 00 : 00 ' AND '2011 - 9 - 20 0 : 00 : 00') 词语法是正确的,发现再access中没有影响相关行数,解决方法在日期前后加上#,语法为: delete from table...

.NET微信公众号开发-3.0查询自定义菜单

一.前言    前面我们已经创建好了我们的自定义菜单。那么我们现在要如何查询我们自定义的菜单。原理都是一样的,而且都是相当简单,只是接口地址文档换掉了。 2.0开始编码    同样我们首先创建好我的查询页面,在这里我们使用aspx页面 selectMenu.aspx protected void Page_Load(object sende...

Access数据库 字段值 字符替换

两种方法: (一)Access数据库内部使用方法 Update 表 SET 字段=replace(字段,"原字符","替换字符") 示例: 假设表为biao、字段为content、原字符为xiazai.jb51.net、替换字符为down1.jb51.net, 那么相应的SQL语句如下:Update biao SET content=replace(co...

微信定时获取token

为了使第三方开发者能够为用户提供更多更有价值的个性化服务,微信公众平台开放了许多接口,包括自定义菜单接口、客服接口、获取用户信息接口、用户分组接口、群发接口等,开发者在调用这些接口时,都需要传入一个相同的参数access_token,它是公众账号的全局唯一票据,它是接口访问凭证。 access_token的有效期是7200秒(两小时),在有效期内,可以一直...

SQL调用另一台服务器的表及存储过程(SQL函数openrowset()的使用以及相关问题处理)

--查询表select * from openrowset('SQLOLEDB', 'IP'; 'sa'; '密码',数据库名称.dbo.表名称) --查询存储--示例1select * from openrowset('SQLOLEDB', 'SERVER=IP;uid=sa;pwd=密码;Database=数据库名称','SET FMTONLY OFF...

CORS跨域实现思路及相关解决方案

本篇包括以下内容: CORS 定义 CORS 对比 JSONP CORS,BROWSER支持情况 主要用途 Ajax请求跨域资源的异常 CORS 实现思路 安全说明 CORS 几种解决方案 自定义CORSFilter Nginx 配置支持Ajax跨域 支持多域名配置的CORS Filter keyword:cors,跨域,ajax,403,fi...