【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 ...
随机推荐
- redo binlog
w https://dev.mysql.com/doc/refman/5.7/en/innodb-redo-log.html https://dev.mysql.com/doc/refman/5.7/ ...
- Struts之Token机制
Struts的Token(令牌)机制能够很好的解决表单重复提交的问题,基本原理是:服务器端在处理到达的请求之前,会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配.在处理完该请求 ...
- PHPExcel实现上传excel文件导入数据库
项目中需要批量导入数据,感觉这个需求以后也会经常用,必须总结分享下: 引入jquery的第三方表单插件: <scripttype="text/javascript&qu ...
- Nginx学习(1)
Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性: 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 ...
- 解决\build\outputs\apk\dream-debug.apk does not exist on disk错误
\build\outputs\apk\dream-debug.apk does not exist on disk.错误,apk一直装不到手机里. 最有效的解决方法:Build>Buid APK
- python默认参数不能定义为可变对象类型
python的默认参数只会在函数定义时被确定,而不是每次调用时重新确定,所以,一旦在函数中修改了默认参数,则在随后的调用中都会生效 由于这个特性,在定义函数时,如果默认参数使用可变的对象类型,如空列表 ...
- PDO:数据访问抽象层
<?php //PDO:数据访问抽象层 //带有事务功能: //dsn:数据源 $dsn="mysql:host=localhost;dbname=aaas"; //造pdo ...
- margin无法居中原因
1.要给居中的元素一个宽度,否者无效. 2.该元素一定不能浮动,否者无效. 3 在HTML中使用标签,需考虑好整体构架,否者全部元素都会居中的.
- des加密——补齐
下面这个网址(英文)介绍的比较全面. http://www.di-mgt.com.au/cryptopad.html
- Java生成json
JSON(JavaScript Object Notation):一种轻量级的数据交换格式: Be JSON:在线JSON校验格式化工具 www.bejson.com 需求:编写代码生成如下的json ...