我想实现数据库的查重处理,sql="select * from sendFiletbl where sendNumber='@sendNumber'";
在程序中定义了一个OleDbParameter:OleDbParameter[] prams1={new OleDbParameter("@sendNumber",System.Data.OleDb.OleDbType.VarChar,50,tbx_sendNumber.Text)};
然后把参数传给olecommand:
olecommand.CommandText=sql;
if (prams1!= null) {
     foreach (OleDbParameter parameter in prams1)
     olecommand.Parameters.Add(parameter);
}
oleread=olecommand.ExecuteReader();
if(oleread.Read())
   return -1;
else
   return 1;但是oleread.read()死活都是false,我郁闷坏了,大虾帮忙

解决方案 »

  1.   

    sql="select * from sendFiletbl where sendNumber='@sendNumber'";--->
    sql="select * from sendFiletbl where sendNumber=@sendNumber";
      

  2.   

    这个好像是没有用把,你用的是,Sql 不是存储过程,所以Parameters根本没有,你就给@sendNumber
    赋个值就完了。
    sql="select * from sendFiletbl where sendNumber='"+ tempStr + "'";
    就可以了。
      

  3.   

    我记得parameter的构造函数第四个参数是别名,不是value,还是加上parameter.value=??的好.
      

  4.   

    parameter只能用于存储过程么?
      

  5.   

    parameter只能用于存储过程么?
    ___
    不一定, brightheroes(闭关|那一剑的风情)正解
    另外你的构造函数错误,详见MSDN
      

  6.   

    brightheroes(闭关|那一剑的风情)的方法我试过,但是系统报错,“必须声明变量 '@sendNumber'”,另,构造函数咋错了,请明示
      

  7.   

    sql="select * from sendFiletbl where sendNumber=@sendNumber";
    OleDbCommand cmd =new OleDbCommand(sql,conn);
    cmd.Parameters.Add("@sendNumber",System.Data.OleDb.OleDbType.VarChar,50).Value = tbx_sendNumber.Text;
      

  8.   

    to penning :我想用oledbparameter来作,这样可以传参数
      

  9.   

    在怎么你没用到存储过程,就是传一条Sql语句,写的再好也是拼串,传的参数就是相当一个字符串,用oledbparameter ,就不用放到‘’中了。