ado.net中的数据读取器

本文关键字:读取 数据 net ado | 更新日期: 2023-09-27 18:00:44

我有一个数据读取器对象,它读取4行,我将在这些行中循环。在读取第三行时,我在同一个表中插入一行,我的数据读取器是否能够读取新插入的行。如果不是如何实现这个功能

这是我试过的代码。

AseCommand sessionCmd = null;
            //AseCommand selectCmd = null;
            AseCommand insertCmd = null;
            AseDataReader reader = null;
            string retCode = "Nothing returned from the Server";
            string insertStatement;
            AseConnection conn = null;
                conn = new AseConnection("Data Source='" + host + "';Port='" + port + "';UID='" + user + "';PWD='" + password + "';Database=" + db + ";");
                conn.Open();
                sessionCmd = new AseCommand("select * from dbo.DummyTable", conn);
                try
                {
                    reader = sessionCmd.ExecuteReader();
                    int count = 0;
                    while (reader.Read())
                    {
                        Console.WriteLine(reader.GetString(0));
                        count++;
                        if (count == 3)
                        {
                            //insert into table
                            insertCmd = new AseCommand("insert into DummyTable values (5)", conn);
                            insertCmd.ExecuteReader();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

ado.net中的数据读取器

我觉得你的问题很有趣,因为我认为如果从另一个进程添加一行,当前读者会看到它吗。如果我写了你的测试,但它没有产生我预期的结果,我可能会来到Stackoverflow问:是否有可能读取新行,而我只是做得不对,甚至可能得到这样的答案:它有时可能有效,但并不总是有效,因为xyz。。。然而,你得到的答案是"别打扰我们,我们昨晚睡得不好。"

一般来说,DataReader是一种只读的前向读取表格数据集流。它正在流式传输查询结果,而不是监视表。。。因此,查询结果已经由数据库执行,并且在调用时得到服务,但没有更新。

顺便说一句,您所做的是使用ExecuteReader命令插入新行,该命令返回一个新的读取器。。。它不会修改您循环通过的外部读取器。你可以从新的阅读器上阅读插入的结果。。。尽管还不太清楚你为什么要这样做。

虽然可能超出了测试的范围,但您可能对多个活动结果集的概念感兴趣,允许您在同一连接上的两个结果集之间来回切换。