我正在做一个小应用程序,用户输入一个查询块,然后执行它们。
问题是我想显示相关信息,例如,如果他输入如下内容:
SELECT * FROM server;
UPDATE server SET name = 'Kojak';
它得到:
-
选定的行
-
受更新影响的行数
我的打印循环看起来像:
reader = cmd.ExecuteReader();
do
{
while (reader.Read())
{
if (!(reader.RecordsAffected > 0))
{
for (int i = 0; i < reader.FieldCount; i++)
host.WriteLine("Field " + i + ": " + reader[i].ToString());
}
else {
host.WriteLine(reader.RecordsAffected.ToString() + " Affected rows.");
}
}
} while (reader.NextResult());
host.WriteLine("Block executed successfuly");
问题是我无法区分select和UPDATEs,因为reader.Read()在到达第二个查询时返回FALSE。
当有一个更新/删除/插入查询时,我如何解决这个问题并获得受影响的行数?
谢谢。