虽说SQLite相对比较好,但是我们也要尝试一下access,对不对,毕竟人家是微软出的,和net框架的契合度更高,用起来也很方便!
废话不多说 ,上代码!
首相需要在:添加引用中的com中找到以下两个,然后引用一下!
然后直接就是下边的代码:
using System.IO;
using ADOX;
/// <summary>
/// 在access数据库中创建表
/// </summary>
/// <param name="filePath">数据库表文件全路径</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))
{
//创建数据库
catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Jet OLEDB:Engine Type=5");
}
//创建连接
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)
{
//如果不是bool类型的,可以为空
if (column.Type != DataTypeEnum.adBoolean)
{
//允许空值
column.Attributes = ColumnAttributesEnum.adColNullable;
}
//保存字段
table.Columns.Append(column);
}
//定义主键
//主要解释一下第三个参数:你设置为主键的名称
//这里默认为:id
table.Keys.Append("FirstTablePrimaryKey", KeyTypeEnum.adKeyPrimary, "id", tableName, null);
//向数据中添加表
catalog.Tables.Append(table);
//关闭连接
cn.Close();
//设置自动增长
//column.Properties["AutoIncrement"].Value = true;
}
如何调用呢?
public void CreateTable()
{
//设置数据库路径(其中包括数据库的名字)
//前边的方法:获取当前运行程序的路径
string DBProgramPath = System.IO.Directory.GetCurrentDirectory() + "\\accessDB.mdb";
//创建需要数据表的字段
ADOX.Column[] userSetColumns =
{
//这块大家注意数据类型的问题
new ADOX.Column(){Name="id",Type=DataTypeEnum.adInteger,DefinedSize=9},
new ADOX.Column(){Name="user_id",Type=DataTypeEnum.adVarWChar ,DefinedSize=50},
}
//设置数据表的名称
tableName="access_test";
//创建数据表
CreateAccessTable(DBProgramPath,tableName,userSetColumns);
}
既然access和SQLite都用过了,就需要研究一下,它们之间的区别和优劣:
通过对网上种种文献的阅读,个人用简短的几句话概括一下:
如果用来开发特别小而且数据分析比较多(net平台开发)的情况下,使用access相对较好,因为在数据量很小的情况下,它和SQLite的速度是不相上下的,而且它具有很直观的查询分析器,对数据进行处理统计分析都很厉害,而且它的学习成本很低,很多非计算机专业的也能学会。
但是,如果你开发的项目没有那么小,而且程序数据查询频繁,那么使用SQLite是更好的选择,而且它也是近年来最主流的数据库,优点也很多,简答列举两个:1.查询性能和效率都很高,2.跨平台,兼容性很强,3.支持limit语句,支持数据自动分页。
简单总结,如有不足,欢迎指出!