【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 ...
随机推荐
- HTML代码的美感
每当我访问精美的网站,我都情不自禁地会去查看源代码.这就好比你拥有一副X光眼镜,能够看到任何人--甚至透视他们的遮羞布.这简直是天经地义的事情嘛!我迫不及待地想了解,这个精美的网站,是不是由同样具有美 ...
- Vue中浏览器的的前进和后退
项目开发的时候,有时候可能需要我们来对页面后退和前进,这个东西跟浏览器自带的前进后退功能很像,下面来大致讲一下在vue中浏览器的前进和后退 一.后退功能 vue中的后退有好多种方法可以使用,使用这些方 ...
- mybatis springmvc velocity的demo
https://codeload.github.com/xingfly/SBlog/zip/master 1.记得导入数据库并修改 数据库的配置. 2.使用jetty运行 pom 添加jetty &l ...
- jquery on 确认删除
$(document).on('click', '.delbtn', function() { if (confirm("确定要删除吗?")) { ...
- 001-web基本程序搭建
一.IDEA创建项目 1.基本项目创建 1.1.基本步骤 1.Create New Project [File→New→Project]→New Project 2.maven→group.artif ...
- AndroidStudio项目import进的包都是红色的
今天在开发项目时,一不留神,项目中import部分的内容全部变成了灰色,最后的类名却都变成了红色,如图: 一时之间,懵逼了~~~.Alt+Enter快捷键导包竟然是这个样子的@_@: 这简直就没见过 ...
- 家里网速北京联通100m光纤
http://www.speedtest.net/ http://cs1.bbn.com.cn:8800/gzweb/index.jsp
- LeetCode-day03
28. Best Time to Buy and Sell Stock 买卖股票的最好时间 29. Best Time to Buy and Sell Stock II 买卖股票2(多次买入,一次卖出 ...
- C# 截屏函数
截屏函数: using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; ...
- selenium网页没加载完成就停止加载并自动刷新
判断一个网页10秒没加载完成就停止加载并自动刷新 driver=webdriver.Chome() driver.set_page_load_timeout(10) while True: try: ...