如何使用SQL查询检索所有行

本文关键字:检索 查询 何使用 SQL | 更新日期: 2023-09-27 18:14:32

try
{
    /* QUERY TO COMPLETE PAGE 13*/
    sqlCodeOther = @"SELECT 
            a.objectID,
            LTRIM(RTRIM(a.att12)) 'LastName',
            LTRIM(RTRIM(a.att32)) 'FirstName',
            LTRIM(RTRIM(a.att42)) 'ID',
            LTRIM(RTRIM(b.att65)) 'Car Name',
            LTRIM(RTRIM(b.att45)) 'Pol Number'
        FROM [db].dbo.stance1029 a LEFT OUTER JOIN [db].dbo.stance1048 b ON a.objectid = b.fk14";
}
catch (Exception ce)
{
}
using (SqlCommand command = new SqlCommand(sqlCodeOther, Conn))
{
    command.CommandType = CommandType.Text;
    using (reader = command.ExecuteReader())
    {
        if (reader.HasRows)
        {
            isDone = true;
            if (reader.Read())
            {
                //fills in PDF form fields (ROW 1)
                pdfFormFields.SetField("PROFLIABILITYCARRIERpg13", reader.GetValue(4).ToString()); //117
                pdfFormFields.SetField("PROFLIABILITYCARRIER2pg13", reader.GetValue(4).ToString()); //191
                pdfFormFields.SetField("POLICYNUMBERpg13", reader.GetValue(5).ToString()); //323
                //fills in PDF form fields (ROW 2)
                //HOW TO?
                //pdfFormFields.SetField("PROFLIABILITYCARRIERpg14", reader.GetValue(?).ToString()); //145
                //pdfFormFields.SetField("PROFLIABILITYCARRIER2pg14", reader.GetValue(?).ToString()); //356
                //pdfFormFields.SetField("POLICYNUMBERpg14", reader.GetValue(?).ToString()); //512
            }
        }
    }
    reader = null;
}

上面的c#代码是用数据查询和填充PDF表单字段。我遇到的问题是查询可能返回多行,但现在我只能读取第一行并填充PDF表单。然后如何获得第二行并填充表单的另一部分,以此类推,直到我读取了所有行并填充了PDF表单中的相应部分?

如何使用SQL查询检索所有行

代替

if (reader.Read())
使用

while(reader.Read())

为了处理不同的pdf字段,你可以尝试这样做:

int rowNum = 13;
while(reader.Read())
{
    pdfFormFields.SetField("PROFLIABILITYCARRIERpg" + rowNum.ToString(), reader.GetValue(4).ToString()); 
    pdfFormFields.SetField("PROFLIABILITYCARRIER2pg" + rowNum.ToString(), reader.GetValue(4).ToString()); 
    pdfFormFields.SetField("POLICYNUMBERpg" + rowNum.ToString(), reader.GetValue(5).ToString()); 
    rowNum++;
}

以上将取决于您是否希望相同的sql字段到相同的pdf字段,但仅根据行索引更改字段的索引…

对于读取多行,您需要迭代。将if替换为while,如:

while (reader.Read())

也不应该有任何需要在try-catch中包含sqlCodeOther初始化,如果只有你试图分配一个硬编码字符串给你的变量。