【LABVIEW到C#】2》database的操作(一)之 创建access和创建表单
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和创建表单的更多相关文章
- jQuery对表单、表格的操作及更多应用(上:表单应用)
内容摘录自锋利的JQuery一书 一.表单应用 1 获取和失去焦点改变样式(P142) $(function(){ $(":input").focus(function(){ // ...
- MVC 【Razor 视图引擎】基础操作 --页面跳转,传值,表单提交
ASPX 与 Razor 仅仅是视图不一样. 新建项目----ASP.NET MVC 4 Web 应用程序------选择模板(空).视图引擎(Razor ) 1.视图中 c# 代码 与 HT ...
- C#操作Access数据库(创建&修改结构)
本文转自:http://www.cnblogs.com/liyugang/archive/2012/11/17/2775393.html 想要在程序中控制Access,不是数据,而是Access数据库 ...
- 『心善渊』Selenium3.0基础 — 16、Selenium对iframe表单的操作
目录 1.什么是iframe表单 2.iframe表单操作流程 3.iframe表单操作常用方法 (1)进入表单 (2)多表单切换 4.表单操作示例 1.什么是iframe表单 实际上就是HTML页面 ...
- Django笔记&教程 6-2 表单(Form)基础操作
Django 自学笔记兼学习教程第6章第2节--表单(Form)基础操作 点击查看教程总目录 1 - 编写表单类 创建新的表单类的代码,一般写到一个专门的forms.py文件中(一般放在对应的app文 ...
- LabVIEW之生产者/消费者模式--队列操作 彭会锋
LabVIEW之生产者/消费者模式--队列操作 彭会锋 本文章主要是对学习LabVIEW之生产者/消费者模式的学习笔记,其中涉及到同步控制技术-队列.事件.状态机.生产者-消费者模式,这几种技术在在本 ...
- LabVIEW之生产者/消费者模式--队列操作
LabVIEW之生产者/消费者模式--队列操作 彭会锋 本文章主要是对学习LabVIEW之生产者/消费者模式的学习笔记,其中涉及到同步控制技术-队列.事件.状态机.生产者-消费者模式,这几种技术在在本 ...
- python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
实例1.取得MYSQL版本 复制代码 代码如下: # -*- coding: UTF-8 -*-#安装MYSQL DB for pythonimport MySQLdb as mdbcon = Non ...
- Day19 Django之Form表单验证、CSRF、Cookie、Session和Model操作
一.Form表单验证 用于做用户提交数据的验证1.自定义规则 a.自定义规则(类,字段名==html中的name值)b.数据提交-规则进行匹配代码如下: """day19 ...
随机推荐
- Man-in-the-middle attack
w https://en.wikipedia.org/wiki/Man-in-the-middle_attack https://zh.wikipedia.org/wiki/中间人攻击 需要通过一个安 ...
- [mysql]清除单表大量数据方法(需保留部分数据)
大半夜的在删除线上的日志数据,需要清理的大概有1亿八千万条...任务艰巨. 毕业前没学过数据库,所以对于如何清理大量数据还真一时不知道该怎么办才好.刚开始确实想过对表进行重命名的方式来处理,不过当时因 ...
- <2013 08 13> TeX and LaTeX, some introduction
1. TeX是Donald E. Knuth教授的精心杰作,它是个功能非常强大的幕后排版系统,含有弹性很大,而且很低阶的排版语言.含有九百多条指令,用Pascal语言(的一个子集)写成. 2. T ...
- Servlet 3.0 介绍
1. 概述 注解代替 web.xml 配置文件 异步处理 对上传的支持 2. 注解代替 web.xml 配置文件 使用方法 在 Servlet 类上添加 @WebServlet(urlPatterns ...
- 0x03 MySQl 库操作
一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等performance_schema: MyS ...
- Python3.6全栈开发实例[006]
6.检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者. dic = {"k1": "v1v1", " ...
- sql server扫盲系列
本系列为入门级,不会介绍过于深入的知识.为防止不道德转载(特别是红黑联盟,把我原文地址删掉,其他照搬,无节操无道德),尽可能打上水印和加上原文地址,读者看的不爽请见谅.原文地址:http://blog ...
- app开发团队人员构成怎么分配?国内著名的app开发团队有哪些
app开发团队人员构成:作为一个独立的app开发团队,人员架构必须包括产品经理,程序开发人员,测试专员,运营团队,UI 设计.这里是对专业的App开发公司而言,一般个人或团队可能一个人会身兼多职,所以 ...
- EM算法(expectation maximization)
EM算法简述 EM算法是一种迭代算法,主要用于含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计.EM算法的每次迭代由两步完成: E步,求期望 M步,求极大. EM算法的引入 如果概率模型的变 ...
- MySQL中的DDL,DML
MySQL中的DDL,DMLDDL:数据定义语言: CREATE,ALTER,DROP DB组件:数据库.表.索引.视图.用户.存储过程.存储函数.触发器.事件调度器等 CR ...