本文实例讲述了C#动态创建Access数据库及表的方法。分享给大家供大家参考。
具体实现方法如下:
//添加两个com组件引用 //Microsoft ADO Ext. 2.8 for DDL and Security //Microsoft ActiveX Data Objects 2.8 Libraryusing System; using System.Collections.Generic; using System.Linq; using System.Text; using ADOX; using System.IO;
namespace WebRequestTest.Common { public static class AccessDbHelper { /// <summary> /// 创建access数据库 /// </summary> /// <param name="filePath">数据库文件的全路径,如 D:\\NewDb.mdb</param> public static bool CreateAccessDb(string filePath) { ADOX.Catalog catalog = new Catalog(); if (!File.Exists(filePath)) { try { catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;DData Source=" + filePath + ";Jet OLEDB:Engine Type=5"); } catch (System.Exception ex) { return false; } } return true; }
/// <summary> /// 在access数据库中创建表 /// </summary> /// <param name="filePath">数据库表文件全路径如D:\\NewDb.mdb 没有则创建 </param> /// <param name="tableName">表名</param> /// <param name="colums">ADOX.Column对象数组</param> public static void CreateAccessTable(string filePath, string tableName, params ADOX.Column[] colums) { ADOX.Catalog catalog = new Catalog(); //数据库文件不存在则创建 if (!File.Exists(filePath)) { try { catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Jet OLEDB:Engine Type=5"); } catch (System.Exception ex) {
} } ADODB.Connection cn = new ADODB.Connection(); cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath, null, null, -1); catalog.ActiveConnection = cn; ADOX.Table table = new ADOX.Table(); table.Name = tableName; foreach (var column in colums) { table.Columns.Append(column); } // column.ParentCatalog = catalog; //column.Properties["AutoIncrement"].Value = true; //设置自动增长 //table.Keys.Append("FirstTablePrimaryKey", KeyTypeEnum.adKeyPrimary, column, null, null); //定义主键 catalog.Tables.Append(table); cn.Close(); } //========================================================================================调用 //ADOX.Column[] columns = { // new ADOX.Column(){Name="id",Type=DataTypeEnum.adInteger,DefinedSize=9}, // new ADOX.Column(){Name="col1",Type=DataTypeEnum.adWChar,DefinedSize=50}, // new ADOX.Column(){Name="col2",Type=DataTypeEnum.adLongVarChar,DefinedSize=50} // }; // AccessDbHelper.CreateAccessTable("d:\\111.mdb", "testTable", columns); } }
希望本文所述对大家的C#程序设计有所帮助。