位置0没有行

时间:2014-02-25 09:08:06

标签: c# asp.net sql

我有以下代码段:

if (!IsPostBack)
{
    if (Request.QueryString["id"] != null)
    {
        string catid = Request.QueryString["id"].ToString();
        Query1 = "select senderfirstname from messages where senderid='" + catid + "'";
        adap = new SqlDataAdapter(Query1, con);
        DataTable dt = ds.Tables["messages"];
        DataRow dr = dt.Rows[0];

        if (dt.Rows.Count > 0)
        {
            Session["table"] = dr["senderfirstname"].ToString();       
        }
        else
        {
            Label1.Text = "error";
        }
    }
}      

但我收到的错误是:

  

位置0没有行。

我在sql server中有相同的查询,但我的表中包含此查询的内容。

2 个答案:

答案 0 :(得分:1)

将数据加载到DataSet。您必须致电SqlDataAdapter.Fill以加载DataSet中的数据。同时在您检查Rows计数大于零的情况下分配行,以便在不存在行时不获取异常

if (!IsPostBack)
{
     if (Request.QueryString["id"] != null)
     {
         string catid = Request.QueryString["id"].ToString();
         Query1 = "select senderfirstname from messages where senderid='" + catid + "'";
         adap = new SqlDataAdapter(Query1, con);
         adap.Fill(ds);
         DataTable dt = ds.Tables["messages"];

         if (dt.Rows.Count > 0)
         {
              DataRow dr = dt.Rows[0];
              Session["table"] = dr["senderfirstname"].ToString();       
         }
         else
         {
            Label1.Text = "error";
         }
    }
}

答案 1 :(得分:0)

请检查下面的更新代码

if (!IsPostBack)
{
  if (Request.QueryString["id"] != null)
  {
   string catid = Request.QueryString["id"].ToString();
   Query1 = "select senderfirstname from messages where senderid='" + catid + "'";
   adap = new SqlDataAdapter(Query1, con);
   DataTable dt = ds.Tables["messages"];

   if (dt.Rows.Count > 0)
   {
      DataRow dr = dt.Rows[0];
      Session["table"] = dr["senderfirstname"].ToString();
   }
   else
   {
      Label1.Text = "error";
   }
}