2

vb.netのSQLコマンドを使用して、FirstName、SurName、EmailAddress、またはSkillSetに基づいて、Visual Studio 2010のデータベースからユーザーを検索する必要があるユニプロジェクトを行っています。

したがって、最初から...使用は登録され、「Java」、「C#」などで入力する単一のテキストボックスであるスキルセットが含まれます。

ユーザーが複数のスキルを持っている場合は、SkillSet を除いて、すべてを検索できます。

SQLコマンドで「LIKE」を使用して何かを検索したい。

ユーザーを検索するために私が今持っているものは次のとおりです。

必要な詳細を選択する SQL コマンド

Dim command As New SqlCommand("SELECT [FirstName], [SurName], [EmailAddress], [SkillSet], [UserID] FROM [Users] WHERE ([FirstName] = @FirstName OR [SurName] = @SurName OR [EmailAddress] = @EmailAddress OR [SkillSet] LIKE '%' @SkillSet '%')", connection)

パラメータの作成

    Dim firstnameParam As New SqlParameter("@FirstName", Me.UserSearchTextBox.Text)
    Dim surnameParam As New SqlParameter("@SurName", Me.UserSearchTextBox.Text)
    Dim emailParam As New SqlParameter("@EmailAddress", Me.UserSearchTextBox.Text)
    Dim skillSetParam As New SqlParameter("@SkillSet", Me.UserSearchTextBox.Text)

    command.Parameters.Add(firstnameParam)
    command.Parameters.Add(surnameParam)
    command.Parameters.Add(emailParam)
    command.Parameters.Add(skillSetParam)`
4

3 に答える 3

1

INを使用したいLIKEではなく

Dim command As New SqlCommand("SELECT [FirstName], [SurName], [EmailAddress], [SkillSet], [UserID] FROM [Users] WHERE ([FirstName] = @FirstName OR [SurName] = @SurName OR [EmailAddress] = @EmailAddress OR [SkillSet] IN (@SkillSet)", connection)

SkillSet は、次のような形式で渡す必要があります。

'SQL','PHP','JAVA'

ユーザー入力を必要な文字列にフォーマットすることについてアドバイスできるほどVb.netについてよく知りません。

于 2012-11-20T16:15:52.683 に答える
0

今それが機能するようになりました。別のブラケットのセットがありませんでした。これで、ユーザーが数文字だけ挿入した場合に結果を取得できます。助けてくれてありがとう!

Dim command As New SqlCommand("SELECT [FirstName], [SurName], [EmailAddress], [UserID], [SkillSet] FROM [Users] WHERE ([FirstName] = @FirstName OR [SurName] = @SurName OR [EmailAddress] = @EmailAddress OR [SkillSet] LIKE '%@SkillSet%' )", connection)
于 2012-11-21T11:50:55.733 に答える
0

非常に迅速なGoogleは、このサイトで次の回答を明らかにします。

SQL LIKE 句での SqlParameter の使用が機能しない

方法?パラメーターと LIKE ステートメント SQL

したがって、次のように、文字列とパラメーターを連結するため&に (VB.NETを使用しているため、これは C#.NET になります) を使用する必要があります。+'%'

Dim command As New SqlCommand("SELECT [FirstName], [SurName], [EmailAddress], [SkillSet], [UserID] FROM [Users] WHERE ([FirstName] = @FirstName OR [SurName] = @SurName OR [EmailAddress] = @EmailAddress OR [SkillSet] LIKE '%' & @SkillSet & '%')", connection)

また

Dim skillSetParam As New SqlParameter("@SkillSet", "%" & Me.UserSearchTextBox.Text & "%")

クエリからを削除する'%'と、同じ結果が得られます。

于 2012-11-20T16:12:37.887 に答える