有一条记录有两个字符型字段,我的DataReader取得这条记录后用Reader["字段名"]读出来赋给两个运行在服务器上的html input控件.可是一个能赋上值,一个为空.为什么? 其实都是有值的.username.Value=reader["username"].ToString();
oicq.Value=reader["oicq"].ToString();

解决方案 »

  1.   

    >>>其实都是有值的在数据库的查询系统里先确定有值, 或者Response.Write(String.Format("***{0}***",reader["username"]));
    Response.Write(String.Format("***{0}***",reader["oicq"]));
      

  2.   

    不好意思,刚才看了数据库原来该用户名的oicq值为空.: )所以没值.
    不过现在又遇到了一个困难:我在更新该用户的资料时,给oicq.Value赋了值,可是没有写数据库,也没有返回错误,因为我跟踪了结果,ExecuteNonQuery的值为0也就是受影响的行没有.我是直接赋的值,用户名是绝对有的(在数据库中)
      

  3.   

    我模拟的是SQLHelper中的ExecuteNonQuery方法,只不过我转化成了OleDb,数据库是Accessupdate 表 set aa=@aa,..............
    中的@这样的参数有30个.
      

  4.   

    >>>中的@这样的参数有30个don't do that, use a primary key (1 or 2 fields)
      

  5.   

    我是这样更新的.update 表 set aa=@aa,bb=@bb,cc=@cc........... where username=@username其中username就是该表的主键,唯一标符,不知有什么问题吗?
      

  6.   

    as you might know, in OLEDB, the parameters are position-oriented, not name-oriented, so make sure the parameter order is same  as that in SQLor show your code
      

  7.   

    public bool ChangeUser(
    string pro_username,string pro_sex,string pro_oicq,string pro_email,string pro_headimg,
    string pro_birthday,string pro_homepage,string pro_icq,string pro_msn,string pro_aim,string pro_yahoo,string pro_uc,
    string pro_cookies,string pro_open1,string pro_open2,string pro_realname,string pro_country,string pro_tel,string pro_address,
    string pro_province,string pro_city,string pro_sx,string pro_xx,string pro_xy,string pro_occupation,string pro_marital,
    string pro_education,string pro_college,string pro_xg,string pro_introduce
    )
    {
    int returnrows;
    string insertstring="update forums_users set "+
    "sex=@pro_sex,oicq=@pro_oicq,email=@pro_email,headimg=@pro_headimg,"+
    "birthday=@pro_birthday,homepage=@pro_homepage,icq=@pro_icq,msn=@pro_msn,aim=@pro_aim,yahoo=@pro_yahoo,uc=@pro_uc,"+
    "cookies=@pro_cookies,open1=@pro_open1,open2=@pro_open2,realname=@pro_realname,country=@pro_country,tel=@pro_tel,address=@pro_address,"+
    "province=@pro_province,city=@pro_city,sx=@pro_sx,xx=@pro_xx,xy=@pro_xy,occupation=@pro_occupation,marital=@pro_marital,"+
    "education=@pro_education,college=@pro_college,xg=@pro_xg,introduce=@pro_introduce where username=@pro_username"; try
    {
    returnrows=ExecuteNonQuery(ConnectionString,CommandType.Text,insertstring,GetChange_Parameters(
    pro_username,pro_sex,pro_oicq,pro_email,pro_headimg,
    pro_birthday,pro_homepage,pro_icq,pro_msn,pro_aim,pro_yahoo,pro_uc,
    pro_cookies,pro_open1,pro_open2,pro_realname,pro_country,pro_tel,pro_address,
    pro_province,pro_city,pro_sx,pro_xx,pro_xy,pro_occupation,pro_marital,
    pro_education,pro_college,pro_xg,pro_introduce
    ));
    if(returnrows!=1)
    return false;
    return true;
    }
    catch(OleDbException ex)
    {
    Lizheng.Common.JScript.Alert(ex.Message);
    }
    finally
    { }
    return false;
    }
    private OleDbParameter[] GetChange_Parameters(
    string pro_username,string pro_sex,string pro_oicq,string pro_email,string pro_headimg,
    string pro_birthday,string pro_homepage,string pro_icq,string pro_msn,string pro_aim,string pro_yahoo,string pro_uc,
    string pro_cookies,string pro_open1,string pro_open2,string pro_realname,string pro_country,string pro_tel,string pro_address,
    string pro_province,string pro_city,string pro_sx,string pro_xx,string pro_xy,string pro_occupation,string pro_marital,
    string pro_education,string pro_college,string pro_xg,string pro_introduce
    )
    {
    OleDbParameter[] p = 
    {
    OleDbSqlHelp.MakeInParam("@pro_username",OleDbType.Char,10,pro_username),
    OleDbSqlHelp.MakeInParam("@pro_sex",OleDbType.Char,5,pro_sex), OleDbSqlHelp.MakeInParam("@pro_oicq",OleDbType.Char,12,pro_oicq),
    OleDbSqlHelp.MakeInParam("@pro_email",OleDbType.Char,20,pro_email),
    OleDbSqlHelp.MakeInParam("@pro_headimg",OleDbType.Char,32,pro_headimg),
    OleDbSqlHelp.MakeInParam("@pro_birthday",OleDbType.Char,10,pro_birthday), OleDbSqlHelp.MakeInParam("@pro_homepage",OleDbType.Char,30,pro_homepage),
    OleDbSqlHelp.MakeInParam("@pro_icq",OleDbType.Char,12,pro_icq),
    OleDbSqlHelp.MakeInParam("@pro_msn",OleDbType.Char,20,pro_msn),
    OleDbSqlHelp.MakeInParam("@pro_aim",OleDbType.Char,20,pro_aim), OleDbSqlHelp.MakeInParam("@pro_yahoo",OleDbType.Char,20,pro_yahoo),
    OleDbSqlHelp.MakeInParam("@pro_uc",OleDbType.Char,20,pro_uc),
    OleDbSqlHelp.MakeInParam("@pro_cookies",OleDbType.Char,1,pro_cookies),
    OleDbSqlHelp.MakeInParam("@pro_open1",OleDbType.Char,1,pro_open1), OleDbSqlHelp.MakeInParam("@pro_open2",OleDbType.Char,1,pro_open2),
    OleDbSqlHelp.MakeInParam("@pro_realname",OleDbType.Char,6,pro_realname),
    OleDbSqlHelp.MakeInParam("@pro_country",OleDbType.Char,10,pro_country),
    OleDbSqlHelp.MakeInParam("@pro_tel",OleDbType.Char,12,pro_tel), OleDbSqlHelp.MakeInParam("@pro_address",OleDbType.Char,20,pro_address),
    OleDbSqlHelp.MakeInParam("@pro_province",OleDbType.Char,6,pro_province),
    OleDbSqlHelp.MakeInParam("@pro_city",OleDbType.Char,8,pro_city),
    OleDbSqlHelp.MakeInParam("@pro_sx",OleDbType.Char,2,pro_sx), OleDbSqlHelp.MakeInParam("@pro_xx",OleDbType.Char,2,pro_xx),
    OleDbSqlHelp.MakeInParam("@pro_xy",OleDbType.Char,10,pro_xy),
    OleDbSqlHelp.MakeInParam("@pro_occupation",OleDbType.Char,16,pro_occupation),
    OleDbSqlHelp.MakeInParam("@pro_marital",OleDbType.Char,4,pro_marital), OleDbSqlHelp.MakeInParam("@pro_education",OleDbType.Char,6,pro_education),
    OleDbSqlHelp.MakeInParam("@pro_college",OleDbType.Char,20,pro_college),
    OleDbSqlHelp.MakeInParam("@pro_xg",OleDbType.Char,54,pro_xg),
    OleDbSqlHelp.MakeInParam("@pro_introduce",OleDbType.Char,100,pro_introduce)
    };
    return p;
    }