ユーザー用の SQL Server データベースがあり、このテーブルの単純な検索アルゴリズムを作成したいと考えています。私の目標は、複数の単語の検索を組み合わせることができるアルゴリズムを作成することなので、この戦略で試しました: 検索ボタンが押されると、メソッドは最初に検索文字列から個々の単語を抽出し、次にそれらをパラメーターとして に挿入しますSqlCommand
CommandText
。
1 つの単語に対しては機能しますが、複数の単語を入力すると動かなくなります。コードサンプルは次のとおりです。
private void btnSearchUsers_Click(object sender, EventArgs e)
{
command = new SqlCommand();
adapter = new SqlDataAdapter();
dataset = new DataSet();
try
{
User.connection.Open();
command.CommandText = "SELECT * FROM tbl_Users WHERE userActive = 1";
if (!String.Empty.Equals(tboxInputUsers.Text))
{
command.CommandText += " AND";
string[] words = tboxInputUsers.Text.Split(' ');
string id = "id";
foreach (string word in words)
{
id += "a";
command.CommandText += String.Format(" userUsername LIKE @{0} OR userName LIKE @{0} OR userSurname LIKE @{0}", id);
command.Parameters.AddWithValue(String.Format("@{0}", id), word);
}
}
command.Connection = User.connection;
adapter.SelectCommand = command;
adapter.Fill(dataset);
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finally
{
if (ConnectionState.Open.Equals(User.connection.State)) Korisnik.connection.Close();
}
DataTable table = new DataTable();
table = dataset.Tables[0];
dgvUsers.DataSource = table;
dgvUsers.Columns[0].Visible = false;
}
デバッグ モードに移動して 2 つの単語を入力すると、command.Parameters に 2 つのパラメーターがあることが示されますが、それでもクラックします。何が間違っているのですか?
ありがとう!
==編集==
私はこのタイプの
SqlException: 'userUsername' 付近の構文が正しくありません