1.添加com组件引用
//添加两个com组件引用
//Microsoft ADO Ext. 2.8 for DDL and Security
//Microsoft ActiveX Data Objects 2.8 Library
2.代码using引用
using ADOX;
using System.IO;
3.定义数据库路径和需要创建的表名
//定义创建文件的路径--NewDb.mdb是新创建的数据库的名字
public string path = "E:\\项目\\学习资料\\access\\DB\\NewDb.mdb";
//定义表名
public string name = "tomato";
4.方法
#region 创建数据库
/// <summary>
/// 创建access数据库
/// </summary>
public static void CreateAccessDb(string filePath)
{
ADOX.Catalog catalog = new Catalog();
string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath;// + ";Jet OLEDB:Engine Type=5";
if (!File.Exists(filePath))
{
try
{
catalog.Create(conn);
}
catch (System.Exception ex)
{
MessageBox.Show("false");
}
}
}
#endregion
/// <summary>
/// 创建表
/// </summary>
/// <param name="filePath"></param>
/// <param name="tableName"></param>
/// <param name="colums"></param>
public static void CreateAccessTable(string filePath, string tableName, params ADOX.Column[] colums)
{
ADOX.Catalog catalog = new Catalog();
#region 数据库文件不存在则创建
if (!File.Exists(filePath))
{
catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Jet OleDB:Engine Type=5");
}
#endregion
//连接刚刚创建的数据库
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);
}
catalog.Tables.Append(table);
//关闭连接
cn.Close();
}
5.调用
//定义表里的字段内容
ADOX.Column[] columns = {
new ADOX.Column(){Name="id",Type=DataTypeEnum.adInteger,DefinedSize=9},
new ADOX.Column(){Name="col1",Type=DataTypeEnum.adWChar,DefinedSize=50}
};
//创建数据库
AccessDBhelper.CreateAccessDb(path);
//创建数据表
AccessDBhelper.CreateAccessTable(path, name, columns);
问题
创建的时候会有“类型无效的错误”是因为,数据库引擎 Provider 只能接受已知类型的数据类型,下面是可以接受的类型对照表: