Microsoft jet 数据库引擎找不到表

Posted

技术标签:

【中文标题】Microsoft jet 数据库引擎找不到表【英文标题】:Microsoft jet database engine can't find table 【发布时间】:2011-02-17 14:01:54 【问题描述】:

我将 mbd 的拼写更正为 mdb,但现在错误是

Micorsoft Jet 数据库引擎找不到输入表或查询员工确保它存在并且其名称拼写正确。

我要做的是连接数据库并在texbox中提取四个字段这是我的代码

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 System.Data.OleDb;

namespace Empdetails

    public partial class EGUI : Form
    

        private OleDbConnection dbConn; // Connectionn object
        private OleDbCommand dbCmd;     // Command object
        private OleDbDataReader dbReader;// Data Reader object
        private Emp1 Edetails;
        private string sConnection;
        private string sql;


        public EGUI()
        

            InitializeComponent();
        

        private void button1_Click(object sender,System.EventArgs e)
        



            try
            
                // Construct an object of the OleDbConnection 
                // class to store the connection string 
                // representing the type of data provider 
                // (database) and the source (actual db)
                sConnection =
                    "Provider=Microsoft.Jet.OLEDB.4.0;" +
                    "Data Source=employee.mdb";

                dbConn = new OleDbConnection(sConnection);
                dbConn.Open();

                // Construct an object of the OleDbCommand 
                // class to hold the SQL query. Tie the  
                // OleDbCommand object to the OleDbConnection
                // object
                sql = "Select * From employee";
                dbCmd = new OleDbCommand();
                dbCmd.CommandText = sql;
                dbCmd.Connection = dbConn;

                // Create a dbReader object 
                dbReader = dbCmd.ExecuteReader();

                while (dbReader.Read())
                
                    Edetails = new Emp1
                        (dbReader["Name"].ToString(), dbReader["Address"].ToString(), dbReader["SocialSecurityNumber"].ToString(), dbReader["Rate"].ToString());
                    textBox1.Text = dbReader["Name"].ToString();
                    textBox2.Text = dbReader["Address"].ToString();
                    textBox3.Text = dbReader["SocialSecurityNumber"].ToString();
                    textBox4.Text = dbReader["Rate"].ToString();






                    // tb1.Text = dbReader["FirstName"].ToString();
                    // tb2.Text = dbReader["LastName"].ToString();

                dbReader.Close();
                dbConn.Close();
            
            catch (System.Exception ex)
            
                MessageBox.Show("exeption" + ex.ToString());


            

        

        private void EGUI_Load(object sender, EventArgs e)
        

        
    

【问题讨论】:

【参考方案1】:

Tim 和 binil 是对的,你需要提供完整的路径。我测试了你的代码,当你添加完整路径时它可以工作

       try
        
            // Construct an object of the OleDbConnection 
            // class to store the connection string 
            // representing the type of data provider 
            // (database) and the source (actual db)
            string sConnection =
                "Provider=Microsoft.Jet.OLEDB.4.0;" +
                "Data Source=C:\\Code\\***Samples\\ReadFromAccessDB\\employee.mdb";

            using (OleDbConnection dbConn = new OleDbConnection(sConnection))
            
                dbConn.Open();

                // Construct an object of the OleDbCommand 
                // class to hold the SQL query. Tie the  
                // OleDbCommand object to the OleDbConnection
                // object
                string sql = "Select * From employee";
                OleDbCommand dbCmd = new OleDbCommand();
                dbCmd.CommandText = sql;
                dbCmd.Connection = dbConn;

                // Create a dbReader object 
                using (OleDbDataReader dbReader = dbCmd.ExecuteReader())
                

                    while (dbReader.Read())
                    
                        Console.WriteLine(dbReader["EmployeeName"].ToString());
                        Console.WriteLine(dbReader["Address"].ToString());
                        Console.WriteLine(dbReader["SSN"].ToString());
                        Console.WriteLine(dbReader["Rate"].ToString());
                    

                
            
        
        catch (System.Exception ex)
        
            Console.WriteLine("exeption" + ex.ToString());


        
        Console.ReadLine();

    

【讨论】:

【参考方案2】:

是否需要在连接字符串中提供文件的完整路径?

【讨论】:

正确... 需要完整路径才能找到源。 OleDB 不一定基于您运行的目录。 问题是当您在没有该路径的不同 PC 上运行应用程序时。需要使路径动态

以上是关于Microsoft jet 数据库引擎找不到表的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Jet 数据库引擎找不到对象“....”

报错sql读取excel 时 microsoft jet 数据库引擎找不到对象"demo1",请确保对象存在。

VB6:错误 3078“... Jet 数据库引擎找不到输入表或查询...”的可能原因是啥

Microsoft.Jet.OLEDB.4.0 “找不到提供程序。它可能没有正确安装。”错误

Microsoft Access 数据库引擎找不到输入表或查询

EXCEL 导入SQL2005 提示 找不到可安装的 ISAM。 (Microsoft JET Database Engine)