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

 

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

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页