在使用Access连接后获取数据--出现此类问题如何解决---未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序解决办法

转载:https://blog.csdn.net/yyzzhc999/article/details/79367114

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks; 


namespace YiElectricCloud_DataModel.Common
{
   public static class DataCommon
    {         
        //C:UsersPublicEPLANData部件Company nameESS_part001.mdb
        public static string strConn = ConfigurationManager.ConnectionStrings["strConn"].ToString(); //@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:202009益电云EPLANClassLibrary1ClassLibrary1inDebugDataESS_part001.accdb";

        public static DataSet GetDataSet(string strSql,string tableName) 
        {

            DataSet ds = new DataSet();
            try
            {
                using (OleDbConnection con = new OleDbConnection(strConn))
                {
                    if (con.State!=ConnectionState.Open)
                    {
                        con.Open();
                    }
                    OleDbDataAdapter adapter = new OleDbDataAdapter(strSql,strConn);
                    adapter.Fill(ds, tableName);
                    return ds;
                }
            }
            catch (OleDbException OleDbException)
            {

                throw OleDbException;
            }
        }
        /// <summary>
        ///获取数据源受影响行的函数,此函数用于增加、查找、更新操作 ADD,Search,update
        /// </summary>
        /// <param name="strSql"></param>
        /// <returns></returns>
        public static int ExecutQuery(string strSql)
        {  
            try
            {
                using (OleDbConnection con = new OleDbConnection(strConn))
                {
                    if (con.State != ConnectionState.Open)
                    {
                        con.Open();
                    }
                    OleDbCommand cmd = new OleDbCommand(strSql,con);
                    OleDbTransaction ts = con.BeginTransaction();
                    cmd.Transaction = ts;
                    int h = cmd.ExecuteNonQuery();
                    if (h>0)
                    {
                        ts.Commit();
                    }
                    else
                    {
                        ts.Rollback();
                    }
                    return h;
                }
            }
            catch (OleDbException OleDbException)
            {

                throw OleDbException;
            }
        }
    }
}