您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

C#操作Access数据库,收集了3篇经典文章

2024/8/15 13:46:53发布62次查看
【导言】因为开发制作一个小工具数据转移工具,需要用c#操作access数据库。所以上网搜索了一下,有三篇文章内容比较好,特收录如下。 另有一份大礼送给网友:《ado 程序员参考》 另一个链接:csdn下载-ado程序员参考中文版 一、创建数据库的基本方法: 原作
【导言】因为开发制作一个小工具“数据转移工具”,需要用c#操作access数据库。所以上网搜索了一下,有三篇文章内容比较好,特收录如下。
另有一份大礼送给网友:《ado 程序员参考》 
 另一个链接:csdn下载-ado程序员参考中文版
一、创建数据库的基本方法:
原作者迭失
microsoft ado ext.2.8
我想利用c#创建一个access数据库文件(a.mdb)。请问用什么办法可以实现。
a.mdb文件是原来没有的,程序需要创建一个然后往里面写数据!
1.
※新建工程
※进入解决方案->引用->添加引用
->选择-> ok
※编码
//命令行工程代码如下
using system;
using adox;
namespace consoleapplication1
{
class class1
{
[stathread]
static void main(string[] args)
{
adox.catalogclass cat = new adox.catalogclass();
cat.create(provider=microsoft.jet.oledb.4.0; +
data source=d:\\accessdb\\newmdb.mdb; +
jet oledb:engine type=5);
console.writeline(database created successfully);
cat = null;
}
}
}
//asp.net代码如下
private void page_load(object sender, system.eventargs e)
{
adox.catalogclass cat = new adox.catalogclass();
cat.create(provider=microsoft.jet.oledb.4.0; +
data source=c://database//newmdb.mdb; +
jet oledb:engine type=5);
cat = null;
response.write(ok);
2.用sqlserver 的代码如下
sqlconnection conn=new sqlconnection(server=lemoncat007;uid=sa;pwd=gtt);
conn.open();
sqlcommand cmd=new sqlcommand(create database test,conn);
cmd.executenonquery();
3 也可以创建一个procedure 将创建数据库的语句写到里面然后执行
二、创建数据库,并且添表和添加字段
原文《用c#动态创建access数据库》
记得以前要动态的创建access数据库的mdb文件都是采用dao,用vc开发,一大堆的api,很是麻烦。现在好像也鲜有人提起dao。其实动态的创建mdb数据的最简单的方法还是adox。
      用adox创建access数据库方法很简单,只需要new一个catalog对象,然后调用它的create方法就可以了,如下:
adox.catalog catalog = new catalog();
catalog.create(provider=microsoft.jet.oledb.4.0;data source=d:\\test.mdb;jet oledb:engine type=5);
仅仅两行代码就搞定了。下来我主要介绍一下在c#中的实现细节。首先你要添加引用,在“add reference”对话框里切换到com页面,选择“microsoft ado ext. 2.8 for ddl and security”,然后点击ok。在文件的开头using adox名字空间。然后添加如上面所示的代码就可以成功的创建access 数据库了,代码如下:
using system;
using system.collections.generic;
using system.text;
using adox;
namespace testadox
{
    class program
    {
        static void main(string[] args)
        {
            adox.catalog catalog = new catalog();
            catalog.create(provider=microsoft.jet.oledb.4.0;data source=d:\\test.mdb;jet oledb:engine type=5);
        }
    }
}
创建了数据库文件是没有实际用处的,我们还要创建表。在创建表之前,我们必须连接目标数据库,用来连接数据的桥梁居然是ado的connection对象,所以我们不得不再次添加对ado的应用,在添加引用对话框中切换到com页面,选择“microsoft activex data objects 2.8 library”,然后点击ok。下边是创建表的完整代码:
using system;
using system.collections.generic;
using system.text;
using adox;
namespace testadox
{
    class program
    {
        static void main(string[] args)
        {
            adox.catalog catalog = new catalog();
            catalog.create(provider=microsoft.jet.oledb.4.0;data source=d:\\test.mdb;jet oledb:engine type=5);
adodb.connection cn = new adodb.connection();
cn.open(provider=microsoft.jet.oledb.4.0;data source=d:\\test.mdb, null, null, -1);
            catalog.activeconnection = cn;
adox.table table = new adox.table();
            table.name = firsttable;
adox.column column = new adox.column();
            column.parentcatalog = catalog;
            column.name = recordid;
            column.type = datatypeenum.adinteger;
            column.definedsize = 9;
            column.properties[autoincrement].value = true;
            table.columns.append(column, datatypeenum.adinteger, 9);
            table.keys.append(firsttableprimarykey, keytypeenum.adkeyprimary, column, null, null);
            table.columns.append(customername, datatypeenum.advarwchar, 50);
            table.columns.append(age, datatypeenum.adinteger, 9);
            table.columns.append(birthday, datatypeenum.addate, 0);
            catalog.tables.append(table);
cn.close();
        }
    }
}
上面的代码中,创建了一个名为firsttable的表,在表里加入了4个字段,并设置了一个主键。表里的字段分别输入4中不同的常用类型,第一个字段是一个自动增长的整数类型,这个类型比较特殊,你必须为这个字段设置parentcatalog属性,并将“autoincrement”的属性值设为true.。access里的text类型对应的就是advarwchar,而日期类型对应的是addate。
键的设置如table.keys.append(firsttableprimarykey, keytypeenum.adkeyprimary, column, null, null)所示,如果是外键的话,你还必须要设置关联的表和关联的字段,也就是append方法的后两个字段。
你也可以参照上边的代码创建索引和视图。
三、c#创建access数据库的备注字段
 原文:http://www.hackpig.cn/post/168.html
具体的用c#创建方式网上一堆,主要是创建备注字段的时候遇到的问题。
用adox创建的,在工程里添加引用dll就不说了,错误的步骤如下(就少了一步):
-------------------------------------------------------------------
            //创建库
            adox.catalogclass catlog = new adox.catalogclass();
            catlog.create(provider=microsoft.jet.oledb.4.0;data source =+path+;);
//创建表
            adox.tableclass tbl = new adox.tableclass();
            tbl.parentcatalog = catlog;
            tbl.name = newtable;
//增加字段
           adox.columnclass c = new adox.columnclass();
           c.parentcatalog = catlog;
           c.name = list1[i];
           c.properties[jet oledb:allow zero length].value = true;
           tbl.columns.append(c, adox.datatypeenum.adlongvarwchar, 16);
catlog.tables.append(tbl);
---------------------------------------------------------------------
access的备注类型是memo,不过在adox方式下,datatypeenum枚举里是没有这项的,adlongvarwchar就是备注,长度为16。这样创建,是不报错的,但是无论如何,建立出来的都是文本型的字段,最大长度限制是255,在内容很多的时候不够用,查了一堆,发现就是因为少了一句,正确的如下:
-------------------------------------
            //创建库
            adox.catalogclass catlog = new adox.catalogclass();
            catlog.create(provider=microsoft.jet.oledb.4.0;data source =+path+;);
//创建表
            adox.tableclass tbl = new adox.tableclass();
            tbl.parentcatalog = catlog;
            tbl.name = newtable;
//增加字段
           adox.columnclass c = new adox.columnclass();
           c.parentcatalog = catlog;
           c.type = adox.datatypeenum.adlongvarwchar; //这句不能少,并且位置必须在其它属性前面,否则会报错。
           c.name = list1[i];
           c.properties[jet oledb:allow zero length].value = true;
           tbl.columns.append(c, adox.datatypeenum.adlongvarwchar, 16);
catlog.tables.append(tbl);
-------------------------------------
这样,就建立出来备注类型的字段了。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product