C#创建Access数据库、表格、并向表格中添加数据

来源:互联网 发布:手机淘宝申请换货流程 编辑:程序博客网 时间:2024/05/07 20:16

C#创建Access数据库以及表,并向表格添加数据

本文主要演示如何通过C#创建Access数据库以及表格,需要执行演示代码,必须添加两个扩展程序包(COM组件):

  • Microsoft ADO Ext. 2.8 for DDL and Security
  • Microsoft ActiveX Data Objects 2.8 Library
    如下图:
    这里写图片描述

效果图:
这里写图片描述


主要代码

  public class Access    {        private static OleDbConnection accessConnection; //Access数据库连接        private static string tableName;        private static List<string> dataShareField = new List<string>(); //共享字段        /************************************************************************/        /*  在指定目录下创建mdb数据库         *  应该先判断文件是否存在,如果不存在,就直接创建,如果存在,则提示用户是否删除重建        /************************************************************************/        public static bool CreateAccessDb(string filePath)        {            ADOX.Catalog catalog = new Catalog();            if (!File.Exists(filePath))            {                try                {                    catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Jet OLEDB:Engine Type=5");                }                catch (System.Exception e)                {                    Trace.TraceWarning("创建Access数据库出错,测试数据不能保存");                    return false;                }            }            return true;        }        //在指定的Access数据库中穿点指定的表格        public static bool CreateAccessTable(string filePath, string tbName, List<string> colums)        {            ADOX.Catalog catalog = new Catalog();            //数据库文件不存在则创建            if (!File.Exists(filePath))            {                try                {                    catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Jet OLEDB:Engine Type=5");                }                catch (System.Exception e)                {                    Trace.TraceWarning("创建Access表出错" , e);                    return false;                }            }            ADODB.Connection cn = new ADODB.Connection();            try            {                cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath, null, null, -1);            }            catch (System.Exception ex)            {                Trace.TraceWarning("Access连接打开失败" , ex);                return false;            }            catalog.ActiveConnection = cn;            ADOX.Table table = new ADOX.Table();            table.ParentCatalog = catalog;            table.Name = tbName;            //公共字段            {                colums.Insert(0, "test_time");                colums.Insert(1, "circuit_batches");                colums.Insert(2, "function");                colums.Insert(3, "ins_no");                colums.Insert(4, "fixture_no");                colums.Insert(5, "testos_no");            }            foreach (var column in colums)            {                ADOX.ColumnClass col = new ADOX.ColumnClass();                col.ParentCatalog = catalog;                col.Name = column;                col.Attributes = ColumnAttributesEnum.adColNullable; //允许空值                table.Columns.Append(col, DataTypeEnum.adVarWChar, 50); //默认数据类型和字段大小            }            catalog.Tables.Append(table);            accessConnection = new OleDbConnection(cn.ConnectionString);            tableName = tbName;            try            {                accessConnection.Open();            }            catch (System.Exception ex)            {                Trace.TraceWarning( "Access连接打开失败" , ex);                return false;            }            cn.Close();            return true;        }        public static bool AppendData2Access(Dictionary<string, object> data)        {            if (data.Count > 0)            {                string fields = null;                string values = null;                string sql = null;                foreach (var item in data)                {                    fields += item.Key.ToString() + ',';                    values += string.Format("'{0}'", item.Value.ToString()) + ',';                }                fields = fields.Remove(fields.Length - 1, 1);                values = values.Remove(values.Length - 1, 1);                sql = string.Format("insert into {0} ({1}) values ({2})", tableName, fields, values);                OleDbCommand cmd = new OleDbCommand(sql, accessConnection);                cmd.ExecuteNonQuery();                     }                       return true;        }        public static void ClosedbConnection()        {            accessConnection.Close();        }    }   

函数说明

1、 public static bool CreateAccessDb(string filePath)
功能:创建Access数据库到指定的目录。
2、 public static bool CreateAccessTable(string filePath, string tbName, List colums) 功能:在指定的Access数据库中创建指定指定名称的表格和指定列。
3、 public static bool AppendData2Access(Dictionary\<\string, object> data)
功能:向表格中添加数据.
4、 public static void ClosedbConnection()
功能:关闭连接。

原创粉丝点击