[ad_1]
実行時にnull値を返せるようにマークされていますが、その値を返させたらプロジェクトの実現のために見ていたビデオ
Public Function consultarCliente(numID As String) As DataTable() Try conectar() cmd = New SqlCommand("select ID, Nombres, TELEFONO FROM CLIENTES WHERE NUM_ID='" & numID & "'") cmd.Connection = con If cmd.ExecuteNonQuery Then Dim dt As New DataTable Dim adp As New SqlDataAdapter(cmd) adp.Fill(dt) Return dt Else Return Nothing End If Catch ex As Exception MsgBox(ex.Message) End Try End Function
プロジェクトのビデオ開発者、Web ページのエラーの調査を参照
私が試したこと:
see the video developer of proyect, investigation in web page error
解決策 1
「実行時に null 値を返すことができるとマークされていますが、その値を返させたらプロジェクトの実現のために見ていたビデオ」または「ビデオを参照してください」の意味がわかりません。プロジェクトの開発者、Web ページのエラーの調査」 – 英語の文章としては意味がありません。 英語に自信のない方はGoogle翻訳をご利用ください。
しかし… ExecuteNonQuery は整数を返します。つまり、多数の行を返す可能性のあるデータのテーブルを SELECT していることになります。 これがブール値としてどのように評価されるのかはわかりませんが、その時点でアプリは例外で失敗すると思います。
テキストを完全にダンプし、行を DataTable に取得するだけです。これにより、より迅速かつ明確になります。
でも…そんなことしないでください! 文字列を連結して SQL コマンドを作成しないでください。 偶発的または意図的な SQL インジェクション攻撃にさらされ、データベース全体が破壊される可能性があります。 代わりに常にパラメータ化されたクエリを使用してください。
文字列を連結すると、SQL が次のようなコマンドを受け取るため、問題が発生します。
SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'
SQL に関する限り、ユーザーが追加した引用符によって文字列が終了するため、問題が発生します。 しかし、さらに悪化する可能性もあります。 代わりに「x’;DROP TABLE MyTable;–」と入力すると、SQL はまったく異なるコマンドを受け取ります。
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'
SQL では、次の 3 つの個別のコマンドとして認識されます。
SELECT * FROM MyTable WHERE StreetAddress = 'x';
完全に有効な SELECT
DROP TABLE MyTable;
完全に有効な「テーブルの削除」コマンド
--'
それ以外はすべてコメントです。
つまり、一致する行を選択し、DB からテーブルを削除し、それ以外は無視します。
したがって、常にパラメータ化されたクエリを使用してください。 または、DB をバックアップから頻繁に復元できるように準備してください。 バックアップは定期的に取っていますよね?
[ad_2]
コメント