一.安装AccessDatabaseEngine驱动程序
为了创建并能够打开Access 2007(2007以上版本的Access文件后缀名为.accdb)以上版本的数据库文件,我们在创建的时候需要用到Microsoft.ACE.OLEDB.12.0,所以这里我们得先安装一下AccessDatabaseEngine.exe这个应用程序。AccessDatabaseEngine可以在它的官网上下载到:
https://www.microsoft.com/zh-cn/download/details.aspx?id=23734
二.创建Access数据库文件
安装完AccessDatabaseEngine驱动程序后,接下来我们可以正式开始创建Access数据库文件了。
1.在项目引用中增加COM组件:MicrosoftADO Ext.6.0 for DDL and Security
2. usingADOX;
using System.IO; //DirectoryInfo需要用到
using ADOX; //创建数据库需要
using System.Data.OleDb; //连接Access数据库
3. 在窗体加载方法中创建数据库文件
ADOX.Catalog catalog = new Catalog();
/* Microsoft.ACE.OLEDB.12.0 可以打开2007以及07以上版本的Access数据库文件 */
/* Microsoft.ACE.OLEDB.12.0需要安装额外的应用(AccessDatabaseEngine.exe)才能支持 */
string connStr = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath);
try{
catalog.Create(connStr);
}
catch (Exception ex){
MessageBox.Show(ex.Message);
}
三.在创建好的数据库文件中添加表
using System.Data.OleDb; //连接Access数据库
/* 创建表之前需要先连接数据库 */
//需要添加引用 Microsoft ActiveX Data Object x.x(我用的是6.0) Library
ADODB.Connection cn = new ADODB.Connection();
try{
cn.Open(connStr, null, null, -1);
}
catch (Exception ex){
MessageBox.Show(ex.Message);
}
catalog.ActiveConnection = cn;
/* 建立新表 */
/* 序号 日期 起始时间 终止时间 时长 时间类别 事项 成就值 */
ADOX.Table table = new ADOX.Table();
table.Name = "DailyRecord"; //表名
ADOX.Column idColumn = new ADOX.Column(); //创建列
idColumn.ParentCatalog = catalog;
idColumn.Type = ADOX.DataTypeEnum.adInteger; //整型
idColumn.Name = "序号"; //列名
idColumn.DefinedSize = 32;
idColumn.Properties["AutoIncrement"].Value = true; //自动增长
table.Columns.Append(idColumn); //向表中添加列
table.Keys.Append("FirstTablePrimaryKey", KeyTypeEnum.adKeyPrimary, idColumn, null, null); //设置主键
table.Columns.Append("日期", DataTypeEnum.adDate, 0);
table.Columns.Append("起始时间", DataTypeEnum.adSingle, 0);
table.Columns.Append("终止时间", DataTypeEnum.adSingle, 0);
table.Columns.Append("时长", DataTypeEnum.adInteger, 0);
table.Columns.Append("时间类别", DataTypeEnum.adWChar, 0);
table.Columns.Append("事项", DataTypeEnum.adWChar, 0);
table.Columns.Append("成就值", DataTypeEnum.adInteger, 0);
//将创建的表添加进数据库
try{
catalog.Tables.Append(table);
}
catch (Exception ex){
MessageBox.Show(ex.Message);
}
/* 关闭数据库连接 */
cn.Close();
MessageBox.Show("成功创建表 DailyRecord");
四.运行程序,观察结果