打印

[NET精华教程] .net教程:在.net 2.0框架下动态创建access数据库和表

.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>




TOP

返回顶部
AYBlue

Processed in 0.041565 second(s), 7 queries.

当前时区 GMT+8, 现在时间是 2009-1-8 14:36 京ICP备06054220号

清除 Cookies - 联系我们 - 163K.com - Archiver - WAP