0

こんにちは私は新しいプログラマーasp.netとvb.netです。検索エンジンにワイルドカードを使用したかった。ワイルドカード(%)を入れて困惑しています。

 Protected Sub search()
        Dim ds As New DataSet
        Dim cls As New Class1

        ds = cls.returndataset("select * from student where Nama_Depan like '" & nama.Text & "' ")

        viewatt.DataSource = ds
        viewatt.DataBind()

    End Sub

よろしくお願いします。以前に質問されたことがある場合は、本当に申し訳ありません。

4

2 に答える 2

2

他の人がすでに指摘しているように

select * from student where Nama_Depan like '%" & nama.Text & "%' 

ワイルドカードを使用する正しい方法です

SQLワイルドカードに関するW3Schoolsチュートリアルへのリンクは次のとおりです。http ://www.w3schools.com/sql/sql_wildcards.asp 簡単に読んでおくことをお勧めします。通常、W3schoolsの記事は非常に優れています。

ただし、これはコードからSQLコマンドを実行するための非常に悪い方法です。誰かがSQLコードをテキストボックスに簡単に挿入し、クエリを実行するとデータベースが破壊される可能性があります。

たとえば、誰かが'; DROP TABLE * -- テキストボックスに入力した場合、これにより最初のクエリを実行できるようになり、次にすべてのテーブルが削除されます。

パラメータ化されたクエリまたはストアドプロシージャを使用することで、これを回避するのは非常に簡単です。個人的には、Stored Proceduredを使用することをお勧めします。これは、このように行うことができます。

CREATE PROCEDURE MyProc
(
   @param1 VARCHAR(50)
)
AS 
BEGIN
   select * from student where Nama_Depan like '%"'+@param1+'%'
END

次に、SQLコマンドを実行するのではなく、VBコードを編集してストアドプロシージャを呼び出す必要があります。

ストアドプロシージャを使用するもう1つの利点は、パフォーマンスがわずかに速く、効率が高いことです。これは、SQLをデータベースに渡すときに、SQLコマンドにコンパイルして実行する必要があるため、ストアドプロシージャはすでにデータベースに格納されているためです。したがって、これを行う必要はありません。

SQLステートメントを送信するだけでなく、ストアドプロシージャを使用することには、セキュリティ上の利点もいくつかあります。ネットワークやインターネットを経由する途中でSQLステートメントを傍受した場合、データベース構造についての洞察を得ることができます。ストアドプロシージャを使用すると、インターセプトできる可能性があるのは、プロシージャ名といくつかのパラメータだけです。

于 2012-07-12T15:26:56.067 に答える
0

これを試して。

    Protected Sub search()
    Dim ds As New DataSet
    Dim cls As New Class1

    ds = cls.returndataset("select * from student where Nama_Depan like '%" & nama.Text & "%' ")

    viewatt.DataSource = ds
    viewatt.DataBind()

End Sub
于 2012-07-12T14:07:31.760 に答える