none
学习PETSHOP遇到的问题,请那位朋友帮我看看 RRS feed

  • 问题

  • 错误提示:ORA-01008: 并非所有变量都已关联
    代码如下:
    DAL层:
            private const string sqlId = "select * from FGMASTER where Fgmasterid=:Fgmasterid";
            private const string sql_parm = ":Fgmasterid";

            public List <FgmasterInfo>  SelectId(string Fgmasterid)
            {

                OracleParameter parm = new OracleParameter(sql_parm, OracleType.Char, 6);
                parm.Value = Fgmasterid;

                List <FgmasterInfo> fgmasteridd = new List <FgmasterInfo>();

                using (OracleDataReader rdr = OracleHelper.ExecuteReader(OracleHelper.ConnectionStringLocalTransaction, CommandType.Text, sqlId, parm))
                {
                    while  (rdr.Read())
                    {
                        FgmasterInfo fgmasterid  = new FgmasterInfo(rdr.GetString(0), rdr.GetString(1));
                        fgmasteridd.Add(fgmasterid);
                    }
                    return fgmasteridd;
                }
    BLL层:
            private FgMasterDAO dal = null;

            public FgMsaterg()
            {
                FgMasterDAO cdao = new FgMasterDAO();
            }

            // 根据ID查询
            public List <FgmasterInfo> SelectId(string Fgmasterid)
            {
                if ( string.IsNullOrEmpty(Fgmasterid ))
               
                  return new List <FgmasterInfo> ();         

                return dal.SelectId(Fgmasterid);
            }
    UI层:
        protected void Button1_Click(object sender, EventArgs e)
        {
            string fgmasteri = TextBox1.Text;

            string fgmasterid = Request.QueryString["fgmasteri"];
            FgMasterDAO ntgid = new FgMasterDAO();

            GridView2.DataSource = ntgid.SelectId(fgmasterid);
            GridView2.DataBind();

            //判断查询的数据是否为空
            if (GridView2.Rows.Count == 0)
            {
                Response.Write(" <font color=red>操作完成!!!!!!!没有查找到数据,请检查数据库! </font>");
            }   
        }
    帮看一下那里出错了,好像是fgmasterid没有值
    2009年6月18日 9:58

答案

  • 这个和名称是否一样没有关系 GridView2.DataSource = ntgid.SelectId(fgmasterid.ToString()); 一样有效, 原因是由于 string fgmasterid = Request.QueryString["fgmasteri"];  执行后 fgmasterid  为 NULL, FgmasterId.ToString() 能够解决问题是由于 ToString() 将 NULL 对象转换成了空的字符串
    知识改变命运,奋斗成就人生!
    2009年6月19日 1:22
    版主

全部回复

  • 没人知道吗?高手进来看看嘛

    2009年6月18日 10:32
  • 可能是 Fgmasterid 为 Null 或空造成的
    知识改变命运,奋斗成就人生!
    2009年6月18日 18:48
    版主
  • 设断点,单步运行看看


    CC.FENG
    2009年6月19日 0:50
  • 问题解决了,
     List <FgmasterInfo> fgmasteridd = new List <FgmasterInfo>();实例化时fgmasteridd必须与Model层中定义名一致.
    GridView2.DataSource = ntgid.SelectId(fgmasterid);
    改成
    GridView1.DataSource = ntgid.SelectId(FgmasterId.ToString())
    2009年6月19日 0:50
  • 这个和名称是否一样没有关系 GridView2.DataSource = ntgid.SelectId(fgmasterid.ToString()); 一样有效, 原因是由于 string fgmasterid = Request.QueryString["fgmasteri"];  执行后 fgmasterid  为 NULL, FgmasterId.ToString() 能够解决问题是由于 ToString() 将 NULL 对象转换成了空的字符串
    知识改变命运,奋斗成就人生!
    2009年6月19日 1:22
    版主