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 ..它没有显示行关键字
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,我很难得到正确的答案,请帮助重建我的代码
答案 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
}