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

 OleDbCommand olecmd = new OleDbCommand("select * from tab_pers_info where pers_no =@pers_no,oleDbConnection1);
oleDbConnection1.Close();
oleDbConnection1.Open();

olecmd.Parameters.Add("@pers_no",OleDbType.VarChar,30);
olecmd.Parameters["@pers_no"].Value = "343";
try
  {
                               OleDbDataReader dr = olecmd.ExecuteReader();
//没有纪录
   if (dr.Read() == false) 

     return ;
}
catch(OleDbException mye)
{
  MessageBox.Show(mye.ToString());
}
finally
{
}

}

解决方案 »

  1.   

    错误是
    要声明变量@pers_no ;
    我已经加了parameter @pers_no,并给值了?为何?
      

  2.   

    同样的写法 我用 sqlconnection ,sqlcommand 没有出错!
    -------------------------------------------
    private void button2_Click(object sender, System.EventArgs e)
    {
    SqlCommand sqlcmd = new SqlCommand("select * from tab_pers_info where pers_no=@pers_no",sqlConnection1);

    sqlConnection1.Close();
    sqlConnection1.Open();


    sqlcmd.Parameters.Add("@pers_no",SqlDbType.VarChar,30);
    sqlcmd.Parameters["@pers_no"].Value = "343";
    try
    {
    SqlDataReader dr = sqlcmd.ExecuteReader();
    //没有纪录
    if (dr.Read() == false) 

    return ;
    }
    catch(OleDbException mye)
    {
    MessageBox.Show(mye.ToString());
    }
    finally
    {
    }
    }
      

  3.   

    OleDbCommand olecmd = new OleDbCommand("select * from tab_pers_info where pers_no =@pers_no,oleDbConnection1);
    留了一个双引号!!!应该是
    OleDbCommand olecmd = new OleDbCommand("select * from tab_pers_info where pers_no =@pers_no",oleDbConnection1);
      

  4.   

    我加了olecmd.CommandType =  CommandType.Text;
    还是同样的错误!大家看看为什么这样,不信你自己调试看看!
      

  5.   

    OleDbCommand olecmd = new OleDbCommand("select * from tab_pers_info where pers_no =@pers_no,oleDbConnection1);
    留了一个双引号!!!应该是
    OleDbCommand olecmd = new OleDbCommand("select * from tab_pers_info where pers_no =@pers_no",oleDbConnection1);
    ----------------
    我实际程序中有"的,我发贴时丢了,如果没有,编译通不过的。我如何执行呢?
      

  6.   

    OleDbParameter  param = new OleDbParameter("@per_no",OleDbType.VarChar,30);
    param.Value = "23";
    olecmd.Parameters.Add(param);尝试了也没有效果!哎
      

  7.   

    呵呵,这个问题还真是“臭名昭著”。原因是:OLE DB .NET Provider不支持@parem_name这种格式。两种方案:
    1. 用SqlCommand(就像你已经做的)
    2. 用"?"代替"@param_name"