在下面显示的我的 try/catch 中,应用程序循环遍历用户输入到文本框中的单词。(我已经验证了这部分是否有效。)当它遍历单词时,它会将每个单词传递给下面的函数。
private string runQuery(string data)
{
// Step 1 - Declare the query and parameters
SqlCeConnection connection = new SqlCeConnection(@"Data Source=keywordDB.sdf");
SqlCeCommand cmd = new SqlCeCommand("SELECT abbrev, description FROM abbreviations WHERE abbrev LIKE @abbrev", connection);
cmd.Parameters.AddWithValue("@abbrev", data);
SqlCeDataReader reader;
try
{
// Step 2 - Opens the connection
connection.Open();
// Step 3- Execute query and assign the data to abbrevQueryResult and results
reader = cmd.ExecuteReader();
reader.Read();
abbrevQueryResult = reader[0].ToString();
results = reader[1].ToString();
// Step 4 compare abbrevQueryResult to data entered by user in textbox
if (abbrevQueryResult.ToLower().Equals(data.ToLowerInvariant()))
{
returnResults.Append(" " + results + ",");
}
}
catch (InvalidOperationException e)
{
badData = new StringBuilder();
badData.Append(" " + data);
}
finally
{
if (connection != null)
{
connection.Close();
}
}
return returnResults.ToString();
}
我注意到,如果我输入 6 个单词,其中 3 个应该可以正常工作,而 3 个应该被 catch 语句捕获,即 catch 语句只会捕获最后一个。知道为什么它只捕捉其中一个词吗?我希望它能够捕获所有这些并将它们全部添加到 StringBuilder badData。