2016-07-26 9 views
3

現在、私はクリケットスコアリングソフトウェアをプログラミングしており、すべての詳細はデータベースに保存されています。私は、 "Wicket"をクリックすると、データベースに "W"フィールドに+1を追加する方法を知りたいです。Sql CommandTextに値を追加する方法

cmd.CommandText = "UPDATE database.table SET W=W+1 WHERE bowler='" & frmmain.lblbowler.Text & "' " 

このコードでは、frmmain.lblbowler.textにはボウラー名が含まれています。

このコードは正しいですか?どのような変更が必要ですか?答えるほど親切でお願いします。

+0

コードが正しく見えるお試しください。間違いましたか? – Madhivanan

+0

データベースの構造はわかりませんが、正しいと思います。もうあなたの質問は何ですか? SQLデータベースへの接続に関するクエリまたはアドバイスを確認するだけです。 – DangeMask

+0

ここに来て、あなたのコードが正しいかどうか尋ねるのは適切ではありません。あなたはコードを実行する必要があり、それがうまくいくならそれは正しいとわかります。ここで質問を投稿し、すべての関連情報を提供してください。エラーメッセージ。 – jmcilhinney

答えて

1

このようにクエリを作成しないでください。入力frmmain.lblbowler.Textは、通常、WindowsフォームまたはWebページのTextBoxコントロールから取得されます。 TextBoxコントロールに配置されたものはfrmmain.lblbowler.Textに格納され、SQL文字列に追加されます。このような状況では、ハッカーはその文字列を悪意のあるものに置き換える可能性があります。最悪の場合、コンピュータを完全に制御することができます。

文字列を動的に構築する代わりに、コードに示すように、パラメータを使用します。

パラメータに配置されたものはすべて、SQL文の一部ではなくフィールドデータとして扱われ、アプリケーションをより安全にします。

は、以下の

cmd.CommandText = "UPDATE database.table SET W=W+1 WHERE bowler = @bowler" 

command.Parameters.Add("@bowler", SqlDbType.NVarChar) 
command.Parameters("@bowler").Value = frmmain.lblbowler.Text