代码为:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
ConStr=ConfigurationSettings.AppSettings["ConStr"];
Conn=new SqlConnection(ConStr);
bsf=Request.QueryString["bsf"].Trim().ToString();
yyz_sql="select bh from ZYJHYSJ,RY,YYZ where RY.ryid=YYZ.ryid AND ZYJHYSJ.bsf=YYZ.bsf AND ZYJHYSJ.bsf='"+bsf+"'";
sjz_sql="select distinct bh from ZYJHYSJ,RY,SJZ where SJZ.ryid=RY.ryid AND ZYJHYSJ.bsf=SJZ.bsf AND ZYJHYSJ.bsf='"+bsf+"'";
xgzy_sql="select xgbsf from ZYJHYSJ,XGZY where ZYJHYSJ.bsf=XGZY.bbsf AND ZYJHYSJ.bsf='"+bsf+"'"; if(!this.IsPostBack)
{

SqlDataAdapter all_cmd=new SqlDataAdapter(all_sql,Conn);
SqlDataAdapter yyz_cmd=new SqlDataAdapter(yyz_sql,Conn);
SqlDataAdapter sjz_cmd=new SqlDataAdapter(sjz_sql,Conn);
SqlDataAdapter xgzy_cmd=new SqlDataAdapter(xgzy_sql,Conn);
DataSet ds=new DataSet();
this.Conn.Open();
all_cmd.Fill(ds,"all");
yyz_cmd.Fill(ds,"yyz");
sjz_cmd.Fill(ds,"sjz");
xgzy_cmd.Fill(ds,"xgzy");
this.Conn.Close();
bt.Text=ds.Tables["all"].Rows[0]["bt"].ToString().Trim(); }
----------------------------------------------------------------------------------------
执行all_cmd.Fill 这个没有问题,但是到了yyz_cmd.fill,就出现了问题,接下来的sjz_cmd.Fill、xgzy_cmd.Fill都是提示列名 'ryid' 无效,但是这几个SQL语句我明明在SQL查询分析器上能正确的搜索到数据的啊,大家帮帮忙呀,我再做不出来领导会批死我的555555555555555555555555

解决方案 »

  1.   

    在if(!this.IsPostBack)
    这句按F9设个断点,F5运行到断点后,VS。NET下面
    的命令窗口取得:yyz_sql  sjz_sql  xgzy_sql三个字符串的值,
    最后放到SQL查询分析器里面运行,看是否能正确执行。
      

  2.   

    在ASP中SQL中的关键字必须加上 []在SQL中 有的不用
      

  3.   

    我试了一下,我把三个不执行的命令运行时得到的值复制到查询分析器里都能执行啊。
    我拷贝下来的值
    select xgbsf from ZYJHYSJ,XGZY where ZYJHYSJ.bsf=XGZY.bbsf AND ZYJHYSJ.bsf='20403200'是这个,可以查到结果 xgbsj 的值是 20406610
    但是在.net里总是提示
    “/”应用程序中的服务器错误。
    --------------------------------------------------------------------------------列名 'ryid' 无效。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 列名 'ryid' 无效。源错误: 
    行 70:  this.Conn.Open();
    行 71:  all_cmd.Fill(ds,"all");
    行 72:  yyz_cmd.Fill(ds,"yyz");
    行 73:  sjz_cmd.Fill(ds,"sjz");
    行 74:  xgzy_cmd.Fill(ds,"xgzy");
     源文件: e:\new_site\updata.aspx.cs    行: 72 堆栈跟踪: 
    [SqlException: 列名 'ryid' 无效。]
       System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream)
       System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior)
       System.Data.SqlClient.SqlCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
       System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
       System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
       System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
       _192._168._0._44.updata.Page_Load(Object sender, EventArgs e) in e:\new_site\updata.aspx.cs:72
       System.Web.UI.Control.OnLoad(EventArgs e)
       System.Web.UI.Control.LoadRecursive()
       System.Web.UI.Page.ProcessRequestMain() 
    您看看是怎么回事,谢谢啦!!
      

  4.   

    foyuan() 您好,可以再说的详细些吗?谢谢啦
      

  5.   

    visual studio .net 相关的书不知谁有
      

  6.   

    我知道怎么回事了,我犯了一个低级错误,原来我没有更新我的Web.config中的database中的数据库,我还用的是老的那个,当我查询的时候用的是新的,所以才会出现这种问题,谢谢大家的关注,谢谢 ChengKing(enthusiasm) foyuan(),ChengKing(enthusiasm)教会了我一个很重要的使用方法,谢谢啦!
      

  7.   

    xgzy_sql="select xgbsf from ZYJHYSJ,XGZY where ZYJHYSJ.bsf=XGZY.bbsf AND ZYJHYSJ.bsf='"+bsf+"'";ZYJHYSJ.bsf=XGZY.bbsf 多写拉一个b,
    还有你传过来的值我看不到,建议用存储过程试试
      

  8.   

    为什么要用这么多SqlDataAdapter?用一个SqlDataAdapter不行吗?
    all_cmd=new SqlDataAdapter(all_sql,Conn);
    all_cmd.Fill(ds,"all");
    all_cmd=new SqlDataAdapter(yyz_sql,Conn);
    all_cmd.Fill(ds,"yyz");
    all_cmd=new SqlDataAdapter(sjz_sql,Conn);
    all_cmd.Fill(ds,"sjz");
    all_cmd=new SqlDataAdapter(xgzy_sql,Conn);
    all_cmd.Fill(ds,"xgzy");
      

  9.   

    为什么不用存储过程,来写查询语句。
    往里添加参数,这样不容易出错,也容易维护!
    在sql server写一个存储过程。SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings.Get("Constr"));
    conn.Open();
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = conn;
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Text = "FindTheDate"; // 存储过程名
    SqlParameter param = null;
    param = cmd.Parameters.Add("@firstParam",SqlDbType.Char,20);
    param.Value = value;
    ...//类似添加参数SqlDataReader dr = cmd.ExcuteReader();
    ...
      

  10.   

    谢谢大家了
    我才学,谢谢大家能教我 
    我不太明白什么是存储过程。
    我想实现的目的就是把多个表添加到dataset中
    我想数据显示在textbox中
    但是我只会这一个方法,又没有更好的方法呢,谢谢大家能告诉我一下。
    还有下一步我还要做修改这些数据呢
    一点思路还没有呢,谢谢大家能支持我,我会努力的学习的!