位置0没有行:c#代码错误

时间:2013-09-16 04:38:52

标签: c# asp.net sql-server-2008

   DataRow dr = GetData("select * from Personal_det where Fid='" + va+"'").Rows[0];
    Document doc = new Document(PageSize.A4, 88f, 88f, 10f, 10f);
    Font NormalFont = FontFactory.GetFont("Arial", 12, Font.NORMAL, BaseColor.BLACK);
    using (System.IO.MemoryStream m = new System.IO.MemoryStream())
    {
        PdfWriter w = PdfWriter.GetInstance(doc, m);
        Phrase phrase = null;
        PdfPCell cell = null;
        PdfPTable table = null;
        BaseColor color = null;
        Paragraph para = null;
        Font times = null;
        BaseFont bfTimes = null;


        doc.Open();
        table = new PdfPTable(2);

        cell = PhraseCell(new Phrase("Faculty Profile", FontFactory.GetFont("Arial", 12, Font.UNDERLINE, BaseColor.BLACK)), PdfPCell.ALIGN_CENTER);
        //table.SpacingBefore = 20f;

        cell.Colspan = 2;
        table.AddCell(cell);
        cell = PhraseCell(new Phrase(), PdfPCell.ALIGN_CENTER);
        cell.Colspan = 2;
        cell.PaddingBottom = 30f;

Error messsage 这是我的C#代码。当我尝试执行它时会出现以下错误

我不知道从哪里得到错误,是来自代码本身还是数据库。在某些情况下,此代码可以正常工作,但是对于某些实例,它会给出以下错误。可以向我澄清错误。

如果我使用dr.rows.length ..它没有显示行关键字No row keyword shown

    private DataTable GetData(string query)
      {
    string conString =                              
     ConfigurationManager.ConnectionStrings["ProjectConnectionString"].ConnectionString;
    SqlCommand cmd = new SqlCommand(query);
    using (SqlConnection cn = new SqlConnection(conString))
    {
        using (SqlDataAdapter da = new SqlDataAdapter())
        {
            cmd.Connection = cn;
            da.SelectCommand = cmd;
            using (DataTable dt = new DataTable())
            {
                da.Fill(dt);
                return dt;
            }


        }
    }


}

这是Getdata方法..以前我有FID作为字符串但现在转换为varchar,我很难得到正确的答案,请帮助重建我的代码

5 个答案:

答案 0 :(得分:2)

希望这样有效....首先检查dt的内容然后选择它的行

 var dt = GetData("select * from Personal_det where Fid='" + Session["FID"] + "'");
        if (dt != null && dt.Rows.Count > 0)
        {
            DataRow dr = dt.Rows[0];// or do somthing

        }
          else
         {
           //No data

         }

答案 1 :(得分:1)

看起来您的查询没有返回任何行...因此异常。

尝试这样的事情......

var dt = GetData(".....your query");
if(dt != null && dt.Rows.Length > 0)
{
    var dr= dt.Rows[0]
    //do your stuff..
}

答案 2 :(得分:1)

执行以下操作

DataTable dt = GetData("select * from Personal_det where Fid='" + va+"'");

进行如下验证

if(dt != null && dt.Rows.Count > 0)
{

  DataRow dr = dt.Rows[0];
  // do something with dr.........

}

答案 3 :(得分:0)

查询没有返回任何行。您应该在尝试访问数据之前检查长度。

var dataTable = GetData(....);
if(dataTable.Rows.Length > 0) 
{
  // you can read row 0
}
else 
{ 
  // no rows
}

答案 4 :(得分:0)

如果偶尔发生这种情况(有时会有行,有时候有行),那么就会出现数据问题。 您应该在访问行之前进行验证,以便处理从此查询返回的零记录

         DataRow dr = GetData("select * from Personal_det where Fid='" + va+"'");

         if (dr.Rows.Length> 0 )
          {
          //post your logic
          }