4
   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;

エラー メッセージ これは私のC#コードです。実行しようとすると、次のエラーが発生します

エラーがどこから発生したのかわかりません。コード自体またはデータベースからのものですか。場合によっては、このコードが機能しますが、場合によっては次のエラーが発生します。エラーを明確にしてもらえますか。

dr.rows.length..を使用すると、rowキーワードが表示されません行キーワードが表示されていません

    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 に変換されています。正しい答えを得るのに苦労しています。コードの再構築を手伝ってください

4

5 に答える 5

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

         }
于 2013-09-17T09:42:00.220 に答える
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.........

}
于 2013-09-16T05:05:31.220 に答える
1

クエリによって返された行がないように見えます...したがって、例外です。

そのようなものを試してください...

var dt = GetData(".....your query");
if(dt != null && dt.Rows.Length > 0)
{
    var dr= dt.Rows[0]
    //do your stuff..
}
于 2013-09-16T04:42:22.493 に答える
0

クエリは行を返しませんでした。データにアクセスする前に、長さを確認する必要があります。

var dataTable = GetData(....);
if(dataTable.Rows.Length > 0) 
{
  // you can read row 0
}
else 
{ 
  // no rows
}
于 2013-09-16T04:44:21.803 に答える
0

これがときどき発生する場合 (行がある場合とない場合がある) は、データの問題です。このクエリから返されたゼロ レコードを処理するには、行にアクセスする前に検証する必要があります

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

         if (dr.Rows.Length> 0 )
          {
          //post your logic
          }
于 2013-09-16T04:45:29.503 に答える