/// 
/// CreateAccessDB 的摘要说明。
/// 对于不同版本的ADO,需要添加不同的引用
/// 请添加引用Microsoft ADO Ext. 2.7 for DDL and Security
/// 请添加引用Microsoft ADO Ext. 2.8 for DDL and Security
/// 
protected void Page_Load( object sender, EventArgs e )
{
 //为了方便测试,数据库名字采用比较随机的名字,以防止添加不成功时还需要重新启动IIS来删除数据库。
 string dbName = Server.MapPath("~/_Test") + "\\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);
Response.Write("
Response.Write("
Response.Write("
 //设置主键
 tbl.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "id", "", "");
 cat.Tables.Append(tbl);
 msg.Text = ("
数据库表:" + tbl.Name + "已经创建成功!");
 System.Runtime.InteropServices.Marshal.ReleaseComObject(tbl);
 System.Runtime.InteropServices.Marshal.ReleaseComObject(cat);
 tbl = null;
 cat = null;
 GC.WaitForPendingFinalizers();
 GC.Collect();
}
VB.NET:
<%@ Page Language="VB" %>
<%@ Import Namespace="ADOX" %>
 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
 Dim dbName As String = "D:\NewMDB" + DateTime.Now.Millisecond.ToString + ".mdb"
 Dim cat As ADOX.CatalogClass = New ADOX.CatalogClass
 cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbName + ";")
 Response.Write("数据库:" + dbName + "已经创建成功!")
 Dim tbl As ADOX.TableClass = New ADOX.TableClass
 tbl.ParentCatalog = cat
 tbl.Name = "MyTable"
 Dim col As ADOX.ColumnClass = 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)
 Dim col2 As ADOX.ColumnClass = 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)
 Dim col3 As ADOX.ColumnClass = 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)
 Dim col4 As ADOX.ColumnClass = New ADOX.ColumnClass
 col4.ParentCatalog = cat
 col4.Name = "Ole类型"
 col4.Type = DataTypeEnum.adLongVarBinary
 tbl.Columns.Append(col4, ADOX.DataTypeEnum.adLongVarBinary, 0)
 tbl.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "id", "", "")
 cat.Tables.Append(tbl)
 msg.Text = ("
数据库表:" + tbl.Name + "已经创建成功!")
 System.Runtime.InteropServices.Marshal.ReleaseComObject(tbl)
 System.Runtime.InteropServices.Marshal.ReleaseComObject(cat)
 tbl = Nothing
 cat = Nothing
 GC.WaitForPendingFinalizers()
 GC.Collect()
 End Sub
来源:孟宪会之精彩世界

