相关疑难解决方法(0)

在针对SQL Server 2008运行时,SqlDataReader.HasRows中是否存在错误?

看看这两个查询:

-- #1
SELECT * FROM my_table
WHERE CONTAINS(my_column, 'monkey')

-- #2
SELECT * FROM my_table
WHERE CONTAINS(my_column, 'a OR monkey')  -- "a" is a noise word
Run Code Online (Sandbox Code Playgroud)

当我在Management Studio中运行时,查询#1返回20行.
查询#2返回相同的20行,但我也在消息选项卡中看到以下内容:

信息性:全文搜索条件包含噪声词.

到目前为止,这么无聊 - 正是我期望发生的事情.

现在,看一下这个C#片段:

using (SqlConnection conn = new SqlConnection(...))
{
    SqlCommand cmd = conn.CreateCommand();
    // setup the command object...

    conn.Open();
    using (SqlDataReader dr = cmd.ExecuteReader())
    {
        if (dr.HasRows)
        {
            // get column ordinals etc...

            while (dr.Read())
            {
                // do something useful...
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我针对查询#1运行此代码时,所有内容都按预期运行 - 为20行中的每一行命中"执行一些有用的"部分. …

.net sql sql-server ado.net sql-server-2008

20
推荐指数
2
解决办法
7648
查看次数

自 SQL 2008 升级以来,SqlDataReader.HasRows 返回 false

我有一个连接到 SQL 数据库的 ASP.NET 2.0 网站。我已将 SQL 服务器从 2000 年升级到 2008 年,从那时起,一页无法正常工作。

我已经解决了这个问题,即使数据集不为空,对 SqlDataReader.HasRows 的调用也返回 false 并且删除检查允许通过 reader.Read() 循环访问预期数据。

    _connectionString = WebConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString;
    SqlConnection connection = new SqlConnection(_connectionString);
    SqlCommand command = new SqlCommand(searchtype, connection);
    SqlParameter _parSeachTerm = new SqlParameter("@searchterm", SqlDbType.VarChar, 255);
    _parSeachTerm.Value = searchterm;
    command.Parameters.Add(_parSeachTerm);
    command.CommandType = CommandType.StoredProcedure;
    try
    {
        connection.Open();
        SqlDataReader reader = command.ExecuteReader();
        if (reader.HasRows) //this always returns false!?
        {
            while (reader.Read())
            {...
Run Code Online (Sandbox Code Playgroud)

有人知道发生了什么吗?在 HasRows 返回正确值的其他页面上也有类似的代码块。

编辑 - 只是为了澄清,存储过程确实返回我已经确认的结果,因为如果我删除 HasRows 检查,循环运行良好。只需将连接字符串中 SQL 服务器的名称更改为在 SQL 2000 上运行的相同数据库,问题就会消失。我已经检查过 NOCOUNT 已关闭,那么如果情况并非如此,还有什么可以使 HasRows …

c# sql asp.net sql-server-2008

6
推荐指数
1
解决办法
7334
查看次数

标签 统计

sql ×2

sql-server-2008 ×2

.net ×1

ado.net ×1

asp.net ×1

c# ×1

sql-server ×1