我的数据库如下:
人
动物
我想要实现的是将我的人及其相关动物导出为PDF。
示例:
John Doe:
鲍勃:
(动物可以与同一个人联系)。
我有一个iTextSharp导出到PDF模块的问题,因为我找不到处理连接原则的情况。
我现在能够毫无问题地导出我的人员,方法是从SQL中检索它们并将它们放入我实现的DataTable
中:
DataTable dt = getPersons();
iTextSharp.text.Document document = new iTextSharp.text.Document();
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("C:\\sample.pdf", FileMode.Create));
document.Open();
table.SetWidths(widths);
table.WidthPercentage = 100;
int iCol = 0;
string colname = "";
PdfPCell cell = new PdfPCell(new Phrase("Persons:"));
cell.Colspan = dt.Columns.Count;
foreach (DataColumn c in dt.Columns)
{
table.AddCell(new Phrase(c.ColumnName, font5));
}
foreach (DataRow r in dt.Rows)
{
if (dt.Rows.Count > 0)
{
table.AddCell(new Phrase(r[0].ToString(), font5));
table.AddCell(new Phrase(r[1].ToString(), font5));
table.AddCell(new Phrase(r[2].ToString(), font5));
table.AddCell(new Phrase(r[3].ToString(), font5));
}
}
document.Add(table);
document.Close();
这将从我的数据库中检索人员(如'SELECT * FROM person')。
但是,我如何在我的pdf中实现与动物(每个人)的链接(仅使用SQL语句,因为我在运行时仅出于预览的原因)?
我是否需要使用2个DataTables,或者我可以采用其他方式吗?
答案 0 :(得分:2)
您可以拥有一个数据表,但让您的查询加入两个表。
SELECT p.PersonID, p.Name, a.AnimalID, a.PetName
FROM person AS p
INNER JOIN animal AS a ON p.PersonID = a.PersonID
要干净利落地执行此操作,您需要一个新方法,例如getPersonsAndAnimals(),它返回包含person
和animal
列的数据表。