Мне нужно получить таблицу и проверить, существует ли переменная 'verb' в одном из трех столбцов, а затем передать значения этой конкретной строки в объект Verb, как указано ниже.C# SqlDataReader проверяет, существует ли запись таблицы?
В этом коде, однако, условие if, которое читает столбцы, пропускает это условие, как если бы поле не было в таблице, даже если оно действительно выполняется. Есть ли лучшие способы сделать это?
public static Verb GetVerbs(string verb)
{
List<string> Verbs = new List<string>();
Verb v = new Verb();
SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=QABase;Integrated Security=True");
try
{
conn.Open();
}
catch (Exception e)
{
System.Console.WriteLine(e.ToString());
}
try
{
SqlDataReader myReader = null;
SqlCommand myCommand = new SqlCommand("select * from EnglishVerbs", conn);
myReader = myCommand.ExecuteReader();
while (myReader.Read())
{
if ((myReader["BaseForm"].ToString().ToLower().Contains(verb.ToLower()))
|| (myReader["PastForm"].ToString().ToLower().Contains(verb.ToLower()))
|| (myReader["PastPartForm"].ToString().ToLower().Contains(verb.ToLower())))
{
v.BaseTense = Convert.ToString(myReader["BaseForm"]);
v.PastTense = Convert.ToString(myReader["PastForm"]);
v.PastParticiple = Convert.ToString(myReader["PastPartForm"]);
}
else
{
//row doesnt exist
v.BaseTense = null;
v.PastTense = null;
v.PastParticiple = null;
}
}
}
catch (Exception e)
{
System.Console.WriteLine(e.ToString());
}
try
{
conn.Close();
}
catch (Exception e)
{
System.Console.WriteLine(e.ToString());
}
return v;
}
Попробуйте это: if ((myReader [0] .ToString(). ToLower(). Содержит (verb.ToLower())) || (myReader [1] .ToString(). ToLower(). Содержит (verb.ToLower())) || (myReader [2] .ToString(). ToLower(). Содержит (verb.ToLower()))) –
почему так много пытаются поймать ???? – Dhwani