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 参数 = new OleDbParameter("text", text);

代替:

OleDbParameter 参数 = 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 回答