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

要使用C#创建Access数据库,你需要遵循以下步骤: 1. 首先,确保你的计算机安装了Microsoft Access数据库软件。如果没有安装,你需要先下载并安装它。 2. 在C#,你需要使用 `System.Data.OleDb` 命名空间来与Access数据库进行交互。因此,确保在代码文件的开头添加以下引用: ```csharp using System.Data.OleDb; ``` 3. 接下来,你可以通过使用 `OleDbConnection` 类来创建Access数据库的连接。在连接字符串指定数据库的路径和名称。 ```csharp string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\路径\数据库名称.mdb"; OleDbConnection connection = new OleDbConnection(connectionString); ``` 请注意,这里的连接字符串的 `Provider` 属性用于指定Access数据库版本。根据你所使用的版本,可能需要不同的提供程序。 4. 现在,你可以打开数据库连接,并执行创建数据库的操作。 ```csharp connection.Open(); // 创建数据库的SQL查询语句 string createDatabaseQuery = "CREATE DATABASE YourDatabaseName"; OleDbCommand command = new OleDbCommand(createDatabaseQuery, connection); command.ExecuteNonQuery(); connection.Close(); ``` 以上代码段的 `YourDatabaseName` 是你想要为数据库指定的名称。 请注意,以上代码只是创建数据库的示例。你还可以执行其他SQL查询语句以创建表格、插入数据等操作。 这是一个基本的创建Access数据库的示例。你可以根据你的需求进行适当的调整和扩展。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值