【C#】通过代码创建Access数据库,数据表

虽说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语句,支持数据自动分页。

 

简单总结,如有不足,欢迎指出!

 

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值