OleDbDataReader drd = cmd.ExecuteReader(CommandBehavior.CloseConnection);
执行到这时候出错,提示@username没有定义?string sqlStr = "select login_name,password from tb_Tuser where login_name=@username"; OleDbParameter[] parms = { new OleDbParameter("@username",admininfo.username)};这种方法是不是用的临时变量,完了到parms给变量一个值?
我感觉是,BCB是是这样用,到这不太会用了。
这个SQL语句中的@username用定义吗?

解决方案 »

  1.   

    你这是写在一个方法里的,要传参数,然后定义一个string型的变量装,,,@username用这个变量代替
      

  2.   

    lovetsfuer
    也来玩C# 了?
    OleDbParameter parm = new OleDbParameter(Name, Type, Direction, Size, Value);
    /*
    (实际上它有七重载大家具体大家可以在VS.net里面就可以看到)
    参数
    Name        可选,字符串,代表 Parameter 对象名称。
    Type        可选,长整型值,指定 Parameter 对象数据类型。
    Direction   可选,长整型值,指定 Parameter 对象类型。。
    Size        可选,长整型值,指定参数值最大长度(以字符或字节数为单位)。
    Value       可选,变体型,指定 Parameter 对象的值。
    以下是实例,查询news表中所有tsing发表的新闻
    -------------------------------------------------------
    */
    sql="select * from newss where username=? order by id"
     //注意查询的条件均用?号表示
    OleDbConnection conn = new OleDbConnection(connString);
    OleDbCommand cmd = new OleDbCommand(sql,conn); 
    OleDbParameter parm = new OleDbParameter("temp",OleDbType.VarChar, 50);
    //temp为Parameter对象可随便定义,OleDbType.VarChar指定为字符串,长度50
    parm.Direction = ParameterDirection.Input;
    //指定其类型输入参数
    cmd.Parameters.Add(parm);
     cmd.Parameters["temp"].Value = "tsing";
    //查询tsing,也可以写成cmd.Parameters[0]
     conn.Open();
     cmd.ExecuteReader();
      

  3.   

    string sqlStr = "select login_name,password from tb_Tuser where login_name=@username";
    你把代码变成这样看看
     OleDbParameter[] parms = { new OleDbParameter("@username")};
    parms[0].value=admininfo.username;
      

  4.   

    @UserName是SqlServer的变量表示形式,别的数据库应该不行吧