未在本地计算机上注册 Microsoft.ACE.OLEDB.12.0 提供程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了未在本地计算机上注册 Microsoft.ACE.OLEDB.12.0 提供程序相关的知识,希望对你有一定的参考价值。

  最近做了一个上位机项目,遇见了很多问题点,一直没有时间总结。现在项目告一段落,上来总结一下,都是通过网络查找资料解决的。再次感谢那些前辈,再次做一下记录,方便同行参考,也方便自己以后查看。

 界面如下:

技术分享

一:问题点,做用户登录时出现:“”未在本地计算机上注册 Microsoft.ACE.OLEDB.12.0 提供程序“” 的弹框报错。

             下面是代码     

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MoudelII;

namespace Template
{
    public partial class frmLogin : Form
    {
        public frmLogin()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                string user = textBox_UserName.Text.Trim();
                string pwd = textBox_Password.Text.Trim();
                if ((user == "") || (pwd == ""))
                {
                    MessageBox.Show("用户名或密码错误!");
                    return;
                }
                //string strconn = "Provider=Microsoft.ACE.OLEDB.4.0;Data Source=" + Application.StartupPath + @"\\db_UserMsg.accdb";
                //modAccess access = new modAccess(strconn);
                string sql = "select * from tbUserInfo where UserName=‘" + user + "‘ and Password=‘" + pwd + "";
                DataTable dt = ComData.dbUser.ExecuteDataTable(sql);
                if (dt.Rows.Count > 0)
                {
                    ComData.UserLevel = Convert.ToInt32(dt.Rows[0]["UserLevel"]);
                    ComData.UserName = dt.Rows[0]["UserName"].ToString().Trim();
                    MessageBox.Show("登录成功!");
                    this.Hide();
                }
                else
                {
                    MessageBox.Show("用户名或密码错误!");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void textBox_Password_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == \\r)
            {
                button1_Click(sender, e);
            }
        }


    }
}

    public static modAccess dbUser = new modAccess("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + @"\\db_UserMsg.dat

 用户和密码,保存到 :

db_UserMsg.dat 的文件里面。
在开发的电脑上无报错,但拷到设备上位机里面就会报:“”未在本地计算机上注册 Microsoft.ACE.OLEDB.12.0 提供程序“”。的错误提示。

二:解决方法:https://q.cnblogs.com/q/43682/ 查到这位前辈的博客,通过他的方法即可解决,再次表示感谢。
下载链接地址
http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe

将下载的
技术分享

 

软件安装到电脑即可解决。



 

 



以上是关于未在本地计算机上注册 Microsoft.ACE.OLEDB.12.0 提供程序的主要内容,如果未能解决你的问题,请参考以下文章

未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0

未在本地计算机上注册“Microsoft.Ace.OleDb.12.0”提供程序。

错误:“Microsoft.Ace.OLEDB.12.0”提供程序未在本地计算机上注册 [重复]

System.InvalidOperationException:“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册

未在本地计算机上注册 Microsoft.ACE.OLEDB.12.0 提供程序

win10:未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序