C# 员工MDB访问获取错误';消息:一个或多个必需参数未给定值';

C# 员工MDB访问获取错误';消息:一个或多个必需参数未给定值';,c#,ms-office,C#,Ms Office,这个程序应该从我手动创建的access数据库中获取数据,并将数据放入表单的字段中。我已将access数据库放入项目的调试文件夹(在visual studio中),但收到标题中所述的错误消息。我想可能是数据库文件放错了位置?我添加了Microsoft Access 14.0作为参考,并为我的Access版本安装了Microsoft Access数据库引擎。任何帮助都将不胜感激!谢谢 解决方案1: namespace WindowsFormsApplication1 { public

这个程序应该从我手动创建的access数据库中获取数据,并将数据放入表单的字段中。我已将access数据库放入项目的调试文件夹(在visual studio中),但收到标题中所述的错误消息。我想可能是数据库文件放错了位置?我添加了Microsoft Access 14.0作为参考,并为我的Access版本安装了Microsoft Access数据库引擎。任何帮助都将不胜感激!谢谢

解决方案1:

namespace WindowsFormsApplication1
{    
    public partial class Form1 : Form
    {
        private string gs_ConnString = "Provider=Microsoft.ACE.OLEDB.12.0;"
            + "Data Source=YorkProducts.accdb;"
            + "Persist Security Info=False;";

        public Form1()
        {
            InitializeComponent();
        }    

        private void ClearForm()
        {
            tb_EmpNr.Clear();
            tb_LastName.Clear();
            tb_FirstName.Clear();
            tb_MiddleName.Clear();
            tb_Address.Clear();
            tb_Zip.Clear();
            tb_City.Clear();
            tb_State.Clear();
            tb_Phone.Clear();
            tb_PayLevel.Clear();
            tb_PayGrade.Clear();
            tb_DOH.Clear();
        }//end clear form

        private void GetCityState()
        {
            try
            {
                //create the connection
                string Query = "SELECT City, State " +
                                       " FROM tbl_Zip WHERE Zip=" + "\"" + tb_Zip.Text + "\"" + "";
                OleDbConnection Connection = new OleDbConnection(gs_ConnString);
                OleDbCommand Command = new OleDbCommand(Query, Connection);
                Connection.Open();
                OleDbDataReader Reader;
                Reader = Command.ExecuteReader();
                Reader.Read();
                tb_City.Text = Reader.GetString(0);
                tb_State.Text = Reader.GetString(1);
                Reader.Close();
                Connection.Close();
            }//end try
            catch (Exception error)
            {
                MessageBox.Show("Message: " + error.Message,
                    "EMPLOYEE MDB ACCESS GET ZIP ERROR", MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
            }//end catch
        }//end get city state

        private void GetRecFromDatabase(string s_EmpNr)
        {
            try
            {
                //create the connection
                string Query = "SELECT EmpNumber, EmpLastName, EmpFirstName, EmpMiddleName, EmpAddress, EmpZip," +
                                       " EmpPhone, EmpPayLevel, EmpPayGrade, EmpHireDate" +
                                       " FROM tbl_Employee WHERE EmpNumber=" + "\"" + s_EmpNr + "\"" + "";
                OleDbConnection Connection = new OleDbConnection(gs_ConnString);
                OleDbCommand Command = new OleDbCommand(Query, Connection);
                Connection.Open();
                OleDbDataReader Reader;
                Reader = Command.ExecuteReader();
                Reader.Read();
                tb_EmpNr.Text = Reader.GetString(0);
                tb_LastName.Text = Reader.GetString(1);
                tb_FirstName.Text = Reader.GetString(2);
                tb_MiddleName.Text = Reader.GetString(3);
                tb_Address.Text = Reader.GetString(4);
                tb_Zip.Text = Reader.GetString(5);
                tb_Phone.Text = Reader.GetString(6);
                tb_PayGrade.Text = String.Format("{0}", Reader.GetInt32(7));
                tb_PayLevel.Text = String.Format("{0}", Reader.GetInt32(8));
                tb_DOH.Text = String.Format("{0:d}", Reader.GetDateTime(9));
                Reader.Close();
                Connection.Close();
                GetCityState();
            }//end try
            catch (Exception error)
            {
                MessageBox.Show("Message: " + error.Message,
                    "EMPLOYEE MDB ACCESS GET ERROR", MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
            }//end catch
        }//end GetRecFromDatabase




        private void b_Clear_Screen_Click_Click(object sender, EventArgs e)
         {
            ClearForm();
            tb_EmpNr.Focus();
        }

        private void b_Add_Customer_Click(object sender, EventArgs e)
        {
            try
            {
                //create the connection
                string Query = "INSERT INTO tbl_Employee (EmpNumber, EmpLastName, EmpFirstName, EmpMiddleName, " +
                                                       "EmpAddress, EmpZip, EmpPhone, EmpHireDate, EmpPayLevel, EmpPayGrade)" +
                             "VALUES(" + "\"" + tb_EmpNr.Text + "\"" + ", "      //strings get double quotes
                                       + "\"" + tb_LastName.Text + "\"" + ", "
                                       + "\"" + tb_FirstName.Text + "\"" + ", "
                                       + "\"" + tb_MiddleName.Text + "\"" + ", "
                                       + "\"" + tb_Address.Text + "\"" + ", "
                                       + "\"" + tb_Zip.Text + "\"" + ", "
                                       + "\"" + tb_Phone.Text + "\"" + ", "
                                       + "#" + tb_DOH.Text + "#" + ", "
                                       + tb_PayLevel.Text + ", "
                                       + tb_PayGrade.Text
                                       + ")";
                OleDbConnection Connection = new OleDbConnection(gs_ConnString);
                OleDbCommand Command = new OleDbCommand(Query, Connection);
                Connection.Open();
                OleDbDataReader Reader;
                Reader = Command.ExecuteReader();
                Reader.Close();
                Connection.Close();
            }//end try
            catch (Exception error)
            {
                MessageBox.Show("Message: " + error.Message,
                    "EMPLOYEE MDB ACCESS ADD ERROR", MessageBoxButtons.OK,
                    MessageBoxIcon.Error);
            }//end catch
        }

        private void b_Get_Customer_Click(object sender, EventArgs e)
        {//get a specific rec
            GetRecFromDatabase(tb_EmpNr.Text);
        }

        private void tb_Zip_TextChanged(object sender, EventArgs e)
        {//get the city and state
            GetCityState();
        }

        private void b_Get_Next_Customer_Click(object sender, EventArgs e)
        {//get next rec
            string s_NextRec = Convert.ToString(Convert.ToInt32(tb_EmpNr.Text) + 1);
            GetRecFromDatabase(s_NextRec);
        }

        private void b_Update_Customer_Click(object sender, EventArgs e)
        {//update the record
            try
            {
                string Query = "UPDATE tbl_Employee SET " +
                                    "EmpLastName =" + "\"" + tb_LastName.Text + "\"" + ", " +
                                    "EmpFirstName =" + "\"" + tb_FirstName.Text + "\"" + ", " +
                                    "EmpMiddleName =" + "\"" + tb_MiddleName.Text + "\"" + ", " +
                                    "EmpAddress =" + "\"" + tb_Address.Text + "\"" + ", " +
                                    "EmpZip =" + "\"" + tb_Zip.Text + "\"" + ", " +
                                    "EmpPhone =" + "\"" + tb_Phone.Text + "\"" + ", " +
                                    "EmpHireDate =" + "#" + tb_DOH.Text + "#" + " " + ", " +
                                    "EmpPayLevel =" + Convert.ToInt32(tb_PayLevel.Text) + ", " +
                                    "EmpPayGrade =" + Convert.ToInt32(tb_PayGrade.Text) +
                               " WHERE EmpNumber =" + "\"" + tb_EmpNr.Text + "\"" + " ";

                OleDbConnection Connection = new OleDbConnection(gs_ConnString);
                OleDbCommand Command = new OleDbCommand(Query, Connection);
                Connection.Open();
                OleDbDataReader Reader;
                Reader = Command.ExecuteReader();
                Reader.Close();
                Connection.Close();
                GetRecFromDatabase(tb_EmpNr.Text);
            }//end try
            catch (Exception error)
            {
                MessageBox.Show("Message: " + error.Message,
                                "EMPLOYEE MDB ACCESS ERROR", MessageBoxButtons.OK,
                                 MessageBoxIcon.Error);
            }//end catch
        }//end update click
    }//end class
}//end namespace
解决方案2:

string Query = "SELECT City, State FROM tbl_Zip WHERE Zip='" + tb_Zip.Text+"'";

我应该用您的语句替换哪一行?@Rew:String查询语句。我用您发送的行替换了代码行,但收到了相同的错误消息。您是否需要特定文件夹中的访问文件?@Rew:您的访问文件应位于当前项目文件夹路径中,否则请执行一件事,将您的访问文件复制到c驱动器中,并在连接字符串中指定路径为->
private string gs\u ConnString=“Provider=Microsoft.ACE.OLEDB.12.0;”+“数据源=C:\\YorkProducts.accdb;“+”Persist Security Info=False;“;
在尝试您的解决方案之前,我注意到我正在尝试使用“Provider=Microsoft.ACE.OLEDB.12.0;“虽然我将Microsoft Access 14.0列为参考,但这可能是问题所在吗?将12更改为14后,我收到错误消息,表示14.0未在我的计算机上注册。但是,12.0未列在参考下,因此我无法将其添加为参考。”
           //create the connection
            string Query = "SELECT City, State FROM tbl_Zip WHERE Zip=@zip";
            OleDbConnection Connection = new OleDbConnection(gs_ConnString);
            OleDbCommand Command = new OleDbCommand(Query, Connection);
            Command.Parameters.AddWithValue("@zip",tb_Zip.Text);
            Connection.Open();
            OleDbDataReader Reader;
            Reader = Command.ExecuteReader();