1

みんな!誰かが私を助けてくれたらとてもうれしいです。

C# と Sql Server 2008 を DB として全文検索エンジンを開発しました。以下のクエリは、SSMS で実行すると結果が返されますが、パラメーター化された形式で C# コードから実行すると何も返されません。

SqlCommand cmd = new SqlCommand("SELECT distinct occurrence "+
                                "FROM sys.dm_fts_parser('FORMSOF(INFLECTIONAL, @doc)', 1033, 0, 0) "+
                                "where display_term in "+
                                "( "+
                                  "SELECT display_term "+
                                  "FROM sys.dm_fts_parser('FORMSOF(INFLECTIONAL, @searchterm)', 1033, 0, 0) "+
                                 ")",conn);

            cmd.Parameters.Add("@searchterm",SqlDbType.VarChar);
            cmd.Parameters["@searchterm"].Value = "distributed property";
            cmd.Parameters.Add("@doc", SqlDbType.VarChar);
            cmd.Parameters["@doc"].Value = "in the search of distributed ways that are provided by properties";
            SqlDataReader dr = cmd.ExecuteReader();
4

1 に答える 1

0

このヘルプを使用して少しクリーンアップすると、VS コードと SQL コードの違いが指摘されますか? また、クエリを作成するときは、USING と ADDWITHVALUE を使用してください。それが私だけかどうかはわかりませんが、これは私の意見では必須です。

using (SqlConnection con = new SqlConnection(conString))
{
    string command = string.Format({0}{1}{2}{3}{4}{5},  
    "SELECT distinct occurrence ",
    "FROM sys.dm_fts_parser('FORMSOF(INFLECTIONAL, @doc)', 1033, 0, 0) ",
    "where display_term in "
    "( ",
    "SELECT display_term ",
    "FROM sys.dm_fts_parser('FORMSOF(INFLECTIONAL, @searchterm)', 1033, 0, 0) ",
    ")")
    using (SqlCommand cmd = new SqlCommand(command,conn))
    {
        cmd.Parameters.AddWithValue("@searchterm", "distributed property");
        cmd.Parameters.AddWithValue("@doc", "in the search of distributed ways that are provided by properties");

        if (con.State != ConnectionState.Open)
        {
            con.Open();
        }
        using (SqlDataReader dr = new SqlDataReader(cmd))
        {
            if(dr.HasRows)
            {
                While(dr.Read())
                {
                    // Do stuff here...
                }
            }
        }
    }
}
于 2014-03-13T17:34:24.133 に答える