0

C# のコード:

public List<Per> RunSpForAotuComplete(string storedProcName, string text)
{
  OleDbDataReader rdr =null;

  List<Per> dictionary = new List<Per>();

  OleDbConnection connection = new OleDbConnection(ConString);

  connection.Open();

  OleDbCommand cmd = new OleDbCommand(storedProcName, connection) 
  {
    CommandType = CommandType.StoredProcedure 
  };

  OleDbParameter parameter = new OleDbParameter("@text", text);

  cmd.Parameters.Add(parameter);
  rdr = cmd.ExecuteReader();

  if (rdr.HasRows)
  {
    while (rdr.Read())
    {
      dictionary.Add(new Per
        {
           name = rdr["semel"].ToString(),
           value = rdr["shem"].ToString(),
        });
     }
   }
}

なぜだか分かりませんif(rdr.HasRows)=false

この手順は次のように書かれています。

SELECT shem, semel
FROM TYISHUV
WHERE shem like @text +'*';

私もやろうとしました:

OleDbParameter パラメータ = 新しい OleDbParameter("テキスト", テキスト);

それ以外の:

OleDbParameter parameter = new OleDbParameter("@text", text);

4

1 に答える 1

0

手順を次のように更新します

SELECT shem, semel
FROM TYISHUV
WHERE shem like ?;

パラメータを追加すると、

  text = text+'*';
  cmd.Parameters.AddWithValue("@text", text);
于 2013-03-18T07:53:40.633 に答える