0

I want to connect different access database (they have same tables, same columns) to my system to make a report and this database has a password. I use a openfileDialog to take this database from my files and I want to connect both .mdb, .accdb but but when I use Microsoft.jet.oledb.12.0, I get an error

The microsoft.jet.olebd.12.0 provider is not registered on local machine

This is my code:

 private void tileBrowse_Click(object sender, EventArgs e)
 {
        OpenFileDialog fdlg = new OpenFileDialog();
        fdlg.Title = "C# Corner Open file Dialog";
        fdlg.InitialDirectory = @"C:\Desktop";
        fdlg.Filter = "(*.mdb)|*.mdb|(*.accdb)|*accdb";
        //fdlg.Filter = "All Files (*.*)|*.mdb|*.accdb" + "MS-Access Database Files (*.accdb)|*.accdb, (*.mdb)|*.mdb";

        if (fdlg.ShowDialog() == DialogResult.OK)
        {
            txtFilePath.Text = fdlg.FileName;
        }
 }

 private void txtRead_Click(object sender, EventArgs e)
 {
     //connection string 
     String strDSN = "Provider=Microsoft.Jet.OLEDB.12.0;" + "Data Source=" + txtFilePath.Text; 

     try
     {
            //Create a connection and open it 
            OleDbConnection conn = new OleDbConnection(strDSN);
            conn.Open();

            String strSQl = "SELECT * FROM Student;";

            //create data adapter
            OleDbDataAdapter myCmd = new OleDbDataAdapter(strSQl, conn);

            // Create and fill dataset
            DataSet dtSet = new DataSet();
            myCmd.Fill(dtSet);
            DataTable dt = dtSet.Tables[0];
            dataGridView1.DataSource = dtSet.Tables[0];

            //add items to the list box
            listBox1.Items.Add("ID,F_Name,S_Name," + "Age");
            listBox1.Items.Add("=====================================");

            foreach (DataColumn dc in dt.Columns)
            {
                listBox1.Items.Add(dc.ColumnName + "," + dc.DataType + "," + dc.Unique + "," + dc.AutoIncrement + "," + dc.AllowDBNull);
            }

            OleDbCommand cmd = new OleDbCommand("SELECT student.ID, student.F_name, student.S_name, student.Age, Teachers_Info.Teachers_ID, Teachers_Info.Firstname, Teachers_Info.Surname, Teachers_Info.Teachers_Subject, Teachers_Info.Teachers_code FROM student, Teachers_Info ORDER BY student.ID;", conn);
            OleDbDataReader Reader = cmd.ExecuteReader();

            //if (Reader.HasRows)
            if (Reader.HasRows)
            {
                Reader.Read();
                txtID.Text = (Reader["ID"].ToString());
                txtF_name.Text = (Reader["F_name"].ToString());
                txtS_name.Text = (Reader["S_name"].ToString());
                txtAge.Text = (Reader["Age"].ToString());

                txtTeachers_ID.Text = (Reader["Teachers_ID"].ToString());
                txtFirstname.Text = (Reader["Firstname"].ToString());
                txtSurname.Text = (Reader["Surname"].ToString());
                txtTeachers_Subject.Text = (Reader["Teachers_Subject"].ToString());
                txtTeachers_code.Text = (Reader["Teachers_code"].ToString());
            }

            //close connection
            conn.Close();
        }
        catch (Exception exp)
        {
            MessageBox.Show(exp.Message.ToString());
        }
}
marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
  • Either you have not installed access components or are running a 64 bits exe but have the 32 bit version. Looks like duplicated. Search for "oledb not registered" and if you find a similar question already answered please delete this. – Cleptus Nov 08 '17 at 18:26
  • Possible duplicate of [Where/how can I download (and install) the Microsoft.Jet.OLEDB.4.0 for Windows 8, 64 bit?](https://stackoverflow.com/questions/13811179/where-how-can-i-download-and-install-the-microsoft-jet-oledb-4-0-for-windows-8) – Cleptus Nov 08 '17 at 18:27

0 Answers0