namespace添加如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ADOX;using System.Data;
using System.Data.OleDb;
using System.IO;

一》创建access数据库

首先添加ADOX COM组件

添加过程如下;点击添加引用,在COM组件栏选择相应组件。

使用Microsoft ADO Ext.2.8点击确定。

C#代码实现如下

namespace Database
{
public class accessdatabase
{
public void Database()
{
}
public void creatdb(string path)
{
ADOX.Catalog catalog = new Catalog();
catalog.Create(("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ path +";Jet OLEDB:Engine Type=5"));
}

二》创建access表单

我们通过COM组件ADOB来实现这个功能,具体实现过程如下:

1>添加引用

使用上述COM实现,表的创建,实例代码如下,我们创建之前常用的Userdb,存储登陆用的账户密码及权限,全部是string类型 50长度,其中Username是主键。

 public void User_init(string path)
{
if (!File.Exists(path))
{
ADOX.Catalog A = new Catalog();
A.Create(("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Jet OLEDB:Engine Type=5"));
ADODB.Connection cn = new ADODB.Connection(); cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+path, null, null, -);
A.ActiveConnection = cn; ADOX.Table table = new ADOX.Table();
table.Name = "User"; ADOX.Column column = new ADOX.Column();
column.ParentCatalog = A;
column.Name = "User_Name";
column.Type = DataTypeEnum.adVarWChar;
column.DefinedSize =;
// column.Properties["AutoIncrement"].Value = true;
table.Columns.Append(column, DataTypeEnum.adVarWChar, );
table.Keys.Append("FirstTablePrimaryKey", KeyTypeEnum.adKeyPrimary, column, null, null);
table.Columns.Append("User_ID", DataTypeEnum.adVarWChar, );
table.Columns.Append("Pass_Word", DataTypeEnum.adVarWChar, );
A.Tables.Append(table);
}
///检查该数据库是否存在,如果数据库不存在将会新建该数据库。 }

上述代码时C#具体数据库表单的建立,

结合labview DB工具包的思路和样式我们进一步泛化,封装代码如下:

首先我们先建立一个枚举和一个结构体,结构体与labview vi中的这个簇相同,枚举用于将labview中的数据结构转换到ADO能识别的数据结构

枚举和结构体的代码如下:

        public enum type:byte
{String,U32,Dbl,Data}
public struct columninformation
{
public string columnname;
public type datatype;
public int size;
public bool keyornot;
}

C#创建accesss表的实现代码如下:

public void Appendtable(string path, string table, columninformation[] informations)
{ ADOX.Catalog A = new Catalog();
ADODB.Connection cn = new ADODB.Connection();
cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path, null, null, -);
A.ActiveConnection = cn;
ADOX.Table table1 = new ADOX.Table();
table1.Name = table;
int sn = ; while (sn < informations.Length)
{ ADOX.Column column = new ADOX.Column();
column.ParentCatalog = A;
column.Name = informations[sn].columnname;
switch (informations[sn].datatype)
{
case (type.String):
column.Type = DataTypeEnum.adWChar;
break;
case (type.Data):
column.Type = DataTypeEnum.adFileTime;
break;
case (type.Dbl):
column.Type = DataTypeEnum.adDecimal;
break;
case (type.U32):
column.Type = DataTypeEnum.adDouble;
break;
}
column.DefinedSize = informations[sn].size;
// column.Properties["AutoIncrement"].Value = true;
table1.Columns.Append(column, column.Type, column.DefinedSize);
if (informations[sn].keyornot)
{ table1.Keys.Append("FirstTablePrimaryKey", KeyTypeEnum.adKeyPrimary, column, null, null); };
sn += ;
}
A.Tables.Append(table1); }

参数过多,我们在类库中添加字段path和table并封装创建对应的访问器代码如下

        private string path;

        public string Path
{
get { return path; }
set { path = value; }
} private string table; public string Table
{
get { return table; }
set { table = value; }
}

将创建表单的程序再压缩封装代码如下

        public void Appendtable(columninformation[] informations)
{
Appendtable(path, table, informations);
}

回头看最初的例子,我们可以使用我们库中创建表单的程序代码了

         public void User_init(string path)
{
if (!File.Exists(path))
{
accessdatabase userdb = new accessdatabase();
userdb.Path="D:\\1.mdb";
userdb.Table="User";
userdb.creatdb();
accessdatabase.columninformation A, B, C;
A.columnname = "User_Name";
A.datatype = accessdatabase.type.String;
A.keyornot = true;
A.size = ;
B.columnname = "User_ID";
B.datatype = accessdatabase.type.String;
B.keyornot = false;
B.size = ;
C.columnname = "Pass_Word";
C.datatype = accessdatabase.type.String;
C.keyornot = false;
C.size = ;
accessdatabase.columninformation[] M={A,B,C};
userdb.Appendtable(M);
}
///检查该数据库是否存在,如果数据库不存在将会新建该数据库。 }

【LABVIEW到C#】2》database的操作(一)之 创建access和创建表单的更多相关文章

  1. jQuery对表单、表格的操作及更多应用(上:表单应用)

    内容摘录自锋利的JQuery一书 一.表单应用 1 获取和失去焦点改变样式(P142) $(function(){ $(":input").focus(function(){ // ...

  2. MVC 【Razor 视图引擎】基础操作 --页面跳转,传值,表单提交

    ASPX  与  Razor  仅仅是视图不一样. 新建项目----ASP.NET MVC 4 Web 应用程序------选择模板(空).视图引擎(Razor ) 1.视图中 c# 代码  与 HT ...

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

    本文转自:http://www.cnblogs.com/liyugang/archive/2012/11/17/2775393.html 想要在程序中控制Access,不是数据,而是Access数据库 ...

  4. 『心善渊』Selenium3.0基础 — 16、Selenium对iframe表单的操作

    目录 1.什么是iframe表单 2.iframe表单操作流程 3.iframe表单操作常用方法 (1)进入表单 (2)多表单切换 4.表单操作示例 1.什么是iframe表单 实际上就是HTML页面 ...

  5. Django笔记&教程 6-2 表单(Form)基础操作

    Django 自学笔记兼学习教程第6章第2节--表单(Form)基础操作 点击查看教程总目录 1 - 编写表单类 创建新的表单类的代码,一般写到一个专门的forms.py文件中(一般放在对应的app文 ...

  6. LabVIEW之生产者/消费者模式--队列操作 彭会锋

    LabVIEW之生产者/消费者模式--队列操作 彭会锋 本文章主要是对学习LabVIEW之生产者/消费者模式的学习笔记,其中涉及到同步控制技术-队列.事件.状态机.生产者-消费者模式,这几种技术在在本 ...

  7. LabVIEW之生产者/消费者模式--队列操作

    LabVIEW之生产者/消费者模式--队列操作 彭会锋 本文章主要是对学习LabVIEW之生产者/消费者模式的学习笔记,其中涉及到同步控制技术-队列.事件.状态机.生产者-消费者模式,这几种技术在在本 ...

  8. python数据库操作常用功能使用详解(创建表/插入数据/获取数据)

    实例1.取得MYSQL版本 复制代码 代码如下: # -*- coding: UTF-8 -*-#安装MYSQL DB for pythonimport MySQLdb as mdbcon = Non ...

  9. Day19 Django之Form表单验证、CSRF、Cookie、Session和Model操作

    一.Form表单验证 用于做用户提交数据的验证1.自定义规则 a.自定义规则(类,字段名==html中的name值)b.数据提交-规则进行匹配代码如下: """day19 ...

随机推荐

  1. nosql_action

    ps -aux  查当前端口占用 connecting to: test > show dbs local .078125GB testphp .203125GB > use testph ...

  2. Java8 FutureTask 分析

    实现FutureTask的要点 1.需要实现一个链表(每个节点包含当前线程的引用) 2.通过LockSupport.park 对线程进行阻塞 3.节点的唤醒(task完成, 线程Interrupt, ...

  3. Linux用户相关文件之组文件

    组信息文件: 1.文件地址: /etc/group -rw-r--r--. 1 root root 492 10月 6 21:56 /etc/group 2.文件内容: xiaol:x:500: 3. ...

  4. “格式化HDFS后,HMaster进程启动失败”的问题解决

    用 hadoop namenode -fromat 格式化后,用./start-hbase.sh 启动HMaster和HRegionServer,但是过几秒种后HMaster进程自动关闭,HRegio ...

  5. Retrofit2.2说明-简单使用

    很久前就想学习下Retrofit了,不过总是没有时间,正好最近新项目要用到网络请求,正好研究了下Retrofit2.2的简单使用方法,大致记录如下: Retrofit与okhttp共同出自于Squar ...

  6. 算法题 18 像素翻转 牛客网 CC150

    算法题 18 像素翻转 牛客网 CC150_P114 题目描述 有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时 ...

  7. echarts3.8.4实现模拟迁移

    动态接受城市的经纬度https://zhidao.baidu.com/question/1384875311724922940.html 调用百度api获得ip对应的城市https://www.cnb ...

  8. STP生成树协议原理与算法解析

    转:https://wenku.baidu.com/view/2e52b91d866fb84ae45c8d34.html

  9. VCS 常用命令速查

      VCS是编译型Verilog模拟器,它完全支持OVI标准的Verilog HDL语言.PLI和SDF.VCS具有目前行业中最高的模拟性能,其出色的内存管理能力足以支持千万门级的ASIC设计,而其模 ...

  10. php数组函数-array_push()

    array_push()函数将一个或多个元素插入数组的末尾(入栈). 提示:可以添加一个或者多个值. 注:即使您的数组有字符串键名,您所添加的元素将是数字键名. array_push(array,va ...