.net教程:在.net 2.0框架下动态创建access数据库和表
在以前的文章《如何在.net框架下创建access数据库和表?》中提供的方法,在.net 2.0下无效,所有的字段类型都变成了文本类型,不知道微软改变了什么东西。下面将修正后的代码发布如下。
c#:
<%@ page language="c#" %>
<%@ import namespace="adox" %>
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<script runat="server">
/// <summary>
/// createaccessdb 的摘要说明。
/// 对于不同版本的ado,需要添加不同的引用
/// 请添加引用microsoft ado ext. 2.7 for ddl and security
/// 请添加引用microsoft ado ext. 2.8 for ddl and security
/// </summary>
protected void page_load(object sender, eventargs e)
{
//为了方便测试,数据库名字采用比较随机的名字,以防止添加不成功时还需要重新启动iis来删除数据库。
string dbname = "d:\\newmdb" + datetime.now.millisecond.tostring() + ".mdb";
adox.catalogclass cat = new adox.catalogclass();
cat.create("provider=microsoft.jet.oledb.4.0;data source=" + dbname + ";");
response.write("数据库:" + dbname + "已经创建成功!");
adox.tableclass tbl = new adox.tableclass();
tbl.parentcatalog = cat;
tbl.name = "mytable";
//增加一个自动增长的字段
adox.columnclass col = new adox.columnclass();
col.parentcatalog = cat;
col.type = adox.datatypeenum.adinteger; // 必须先设置字段类型
col.name = "id";
col.properties["jet oledb:allow zero length"].value = false;
col.properties["autoincrement"].value = true;
tbl.columns.append(col, adox.datatypeenum.adinteger, 0);
//增加一个文本字段
adox.columnclass col2 = new adox.columnclass();
col2.parentcatalog = cat;
col2.name = "description";
col2.properties["jet oledb:allow zero length"].value = false;
tbl.columns.append(col2, adox.datatypeenum.advarchar, 25);
//增加数字字段
adox.columnclass col3 = new adox.columnclass();
col3.parentcatalog = cat;
col3.name = "数字";
col3.type = datatypeenum.addouble;
col3.properties["jet oledb:allow zero length"].value = false;
tbl.columns.append(col3, adox.datatypeenum.addouble, 666);
//增加ole字段
adox.columnclass col4 = new adox.columnclass();
col4.parentcatalog = cat;
col4.name = "ole类型";
col4.type = datatypeenum.adlongvarbinary;
col4.properties["jet oledb:allow zero length"].value = false;
tbl.columns.append(col4, adox.datatypeenum.adlongvarbinary, 0);
//设置主键
tbl.keys.append("primarykey", adox.keytypeenum.adkeyprimary, "id", "", "");
cat.tables.append(tbl);
msg.text = ("<br>数据库表:" + tbl.name + "已经创建成功!");
system.runtime.interopservices.marshal.releasecomobject(tbl);
system.runtime.interopservices.marshal.releasecomobject(cat);
tbl = null;
cat = null;
gc.waitforpendingfinalizers();
gc.collect();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>在.net框架下动态创建access数据库和表</title>
</head>
<body>
<form id="form1" runat="server">
<asp:label id="msg" runat="server" />
</form>
</body>
</html>