C# 无法更新通过数据集连接到数据库的行

C# 无法更新通过数据集连接到数据库的行,c#,dataset,row,C#,Dataset,Row,我正在尝试更新表中的一行。 如果row.FirstMessageId==null,那么我会向Messages表询问该特定聊天的第一条消息。 然后我将Message.id放入row.FirstMessageId 但是。。。什么也没发生。数据库未更新 我错过了什么? 谢谢。:) 找到解决方案。 我通过chatsTableAdapter.update(行)更新数据 (不要介意如果(messages.Rows.Count为1),则原始数据库不是“干净的”,这意味着我现在最好忽略一些事情) 你调试了吗?c

我正在尝试更新表中的一行。 如果row.FirstMessageId==null,那么我会向Messages表询问该特定聊天的第一条消息。 然后我将Message.id放入row.FirstMessageId

但是。。。什么也没发生。数据库未更新

我错过了什么? 谢谢。:)

找到解决方案。 我通过
chatsTableAdapter.update(行)
更新数据

(不要介意
如果(messages.Rows.Count为1)
,则原始数据库不是“干净的”,这意味着我现在最好忽略一些事情)


你调试了吗?
chats
变量中是否有数据?是否设置了一些断点进行检查?是否确定已成功连接到db?我很高兴您找到了一些有效的方法,但您是否考虑过使用ORM来处理数据库交互?LINQtoSQL仍然是.NET的一部分,实体框架是一个丑陋但通用的系统,Linq2DB相当容易使用。。。有很多选择可以让你的生活更简单。@MarioLOBO相信我,一个好的ORM会让你的生活更简单。这就是他们设计的目的。花一天时间,学习如何使用Linq2DB或其他东西,你不会后悔的。(我偶尔向Linq2DB投稿,仅供参考。)更新只会更改数据库中已有的值,不会添加新值(也不会删除)。它实际上是将
FirstMessageId
放入正确的列中。我上面说过,有四种类型的命令1)选择2)更新3)插入4)删除。您的代码只执行选择和更新,而不是插入和删除。您需要一个命令生成器来完成这四个步骤。我最初的问题是关于更新以及为什么不更新。您最初的代码有“chat.AcceptChanges();”和accept changes,这四个方法都需要。
using (ChatsTableAdapter chatsTableAdapter = new ChatsTableAdapter())
using (ArchiveDataSet.ChatsDataTable chats = chatsTableAdapter.GetData())
    foreach (ArchiveDataSet.ChatsRow chat in chats)
    {
        if (chat.IsFirstMessageIdNull())
            using (ArchiveDataSet.MessagesDataTable messages =
                new MessagesTableAdapter().GetFirstMessage
                (chat.ChatId))

        if (messages.Rows.Count is 1)
        {
            ArchiveDataSet.MessagesRow message = (ArchiveDataSet.MessagesRow)(messages.Rows[0]);
            chat.FirstMessageId = message.MessageId;
            chat.AcceptChanges();
        }
    }
using (ChatsTableAdapter chatsTableAdapter = new ChatsTableAdapter())
using (ArchiveDataSet.ChatsDataTable chats = chatsTableAdapter.GetData())
    foreach (ArchiveDataSet.ChatsRow chat in chats)
    {
        if (chat.IsFirstMessageIdNull())
            using (ArchiveDataSet.MessagesDataTable messages =
                new MessagesTableAdapter().GetFirstMessage(chat.ChatId))
                if (messages.Rows.Count is 1)
                {
                    ArchiveDataSet.MessagesRow message = (ArchiveDataSet.MessagesRow)(messages.Rows[0]);
                    chat.FirstMessageId = message.MessageId;
                    chatsTableAdapter.Update(chat);
                }
    }