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()
功能:关闭连接。

猜你喜欢

转载自blog.csdn.net/fangyu723/article/details/109194403
今日推荐