0

我将查询作为具有单个参数(并且已更改)的字符串运行,但出现了一些奇怪的行为。这是代码:

String cmd = "SELECT RID FROM SCHEMAS 
              WHERE NAMESPACE_PREFIX = '" + prefix + "' AND GENERIC_SCHEMA = 1";

Response.Write(cmd + "<br>");

using (SqlDataReader elementReader = elementDB.executeCommand(cmd))
{
    while (elementReader.Read())
    {
        Response.Write(cmd+ elementReader["RID"].ToString() + "<br>");
    }
}

我期望发生的事情:

Response.Write执行两次,数据相同。

实际发生了什么:

elementReader 似乎“记住”了前缀的第一个值。当 'prefix' 变量改变时,SQL 语句外的 Response.Write 正确输出字符串,但 SQL 语句内的 while 循环根本不执行。然而,只要 'prefi'x 回到它设置的第一个值,语句就会执行。

我完全不知道为什么会发生这种情况,并希望得到帮助。谢谢。

4

1 回答 1

0

最可能的原因是数据库中的两条记录具有相同的 NAMESPACE_PREFIX。

也许您需要该字段的唯一索引。

于 2012-08-27T04:11:10.433 回答