0

私はそのようなコードを持っており、実行後、データベーステーブルに N 行を取得し、メソッドから N-1 行のデータが返されます。私が間違っていることを理解できず、同様の問題の例を見つけることができません。SQL クエリが原因でデータを失ったのでしょうか、それともコードを間違えたのでしょうか? 助けてください。

    private String sqlCommandSample = "insert into [dbo].[SomeTable] " +
                         "(Title, Descript) " +
                         "output inserted.Title " +
                         "select Item.value('title[1]', 'nvarchar(max)'), Item.value('description[1]', 'nvarchar(max)') " +
                         "from @Xml.nodes('nodes/node') as Result(Item) " +
                         "where not exists (select * from [dbo].[SomeTable] " +
                         "where ([Title] = Item.value('Title[1]', 'nvarchar(200)')))";

    public async Task<List<String>> FillTableAsync(String sqlCommandString, GetArticleLink getArticleLink)
    {
        using (var sqlConnection = new SqlConnection(ConnectionString))
        {
            await sqlConnection.OpenAsync();

            using (var sqlCommand = new SqlCommand(sqlCommandString, sqlConnection))
            {
                using (var sqlReader = await sqlCommand.ExecuteReaderAsync())
                {
                    var listOfLinks = new List<String>();

                    if (await sqlReader.ReadAsync())
                    {
                        while (await sqlReader.ReadAsync())
                        {
                            listOfLinks.Add(await GetLink(sqlReader));
                        }
                    }
                    return listOfLinks;
                }
            }
        }
    }

    private async Task<String> GetLink(DbDataReader reader)
    {
        return await reader.GetFieldValueAsync<String>(0);
    }
4

1 に答える 1

4
 if (await sqlReader.ReadAsync())
 {
     while (await sqlReader.ReadAsync())
     ...

ここで、あなたは行を失いました。whileで十分ですif

于 2013-09-14T11:26:42.537 に答える