2016-04-18 17 views
0

私はちょっとしたプロジェクトがあります。コンボボックスをデータベーステーブルに接続していますが、私はそこから値を選択すると残りのテーブルを表示するボタンをコーディングする必要があります。コンボボックス。そのプロジェクトでSQLEXPRESSデータベースを使用しているだけで助けているかもしれません。コンボボックスを使用してデータベースからデータを取得する

「」私はこのコードを試してみましたが、それは私に近い

間違った構文をエラーを与えて、私のために動作しませんでした。

string Msg; 
     Msg = m.RunDml(" Select * From Doctor Where DocName=" + txtName.Text + " , Gender='" + chk1.Text + "' , BirthDate='" + dtpBDate.Text + "' , Address='" + txtAddress.Text + "' , Salary='" + txtSalary.Text + "')"); 
     if (Msg == "ok") 
     { 
      MessageBox.Show(" Editing Successfully done! "); 
     } 
     else 
     { 
      MessageBox.Show(Msg); 
     } 

のでDocIDコードのComboBoxは次のとおりです。

this.doctorTableAdapter.Fill(this.testdb_morgDataSet.Doctor); 
+4

よろしくお願いいたします。申し訳ありませんが、あなたの質問は、おそらくすぐに閉鎖されます。その理由は、ソリューションを提供するための努力を何も示していないからです。 Stackoverflowはコードを書くサービスではありません。良い一日を。 –

+0

具体的には、適切なコードスニペットとあなたが直面している正確な問題を追加してください。一般的な解決策を求めないでください。 –

+1

申し訳ありません、質問を編集します。 –

答えて

0

コメントとノーリスカスの回答で約SQL injectionの点が作られています。

あなたのエラーの理由は、あなたがAND(またはそうではない - OR)を使用してカンマを使用しているようです。カンマは(afaik)WHERE句で許可されていません。私はちょうど私のSQLサーバーでこれを試して、あなたと同じエラーが発生しました。

詳細については、this MSDN documentation of the WHERE clauseを参照してください。

だからこれにあなたの要求を変更します。

"SELECT * FROM Doctor WHERE DocName='" + txtName.Text + "' AND Gender='" + 
    chk1.Text + "' AND BirthDate='" + dtpBDate.Text + "' AND Address='" + 
    txtAddress.Text + "' AND Salary='" + txtSalary.Text + "'" 

txtName.Textの周りに引用符を忘れてはいけないと終わりに余分閉じ括弧を削除します。

また、SQLインジェクションの脆弱性についてご報告ください。テキストボックスの1つに'を入力するとすぐにリクエストが破棄されることに注意してください。

+0

もう一度エラーを返します。 ')'の近くに構文が正しくありません。 –

+0

余分な閉じ括弧を含むリクエストをコピーしました。私の答えを更新しました。 –

+0

を将来のヒントとして:エラーメッセージを_read_してその要求を確認したり、使用する機能のドキュメントを読んだり、SQL Management StudioやIdeのようなツールで要求をテストしたりする方が簡単です誰かがあなたのためにこのすべてをやってくれることを望むフォーラムの質問。プラス:あなた自身を見つけ出すことでもっと学びます。 –

0

良いニュースは、システムが実際には非常に有用であることされていることです。 SQLコマンドの最初のコンマを見ると、それはあなたのtxtName.txtの後ろにあります。これは引用符で囲まれていることを忘れてしまっています(他のテキスト項目で行ったことがわかります)。

ので、試してみてください。

" Select * From Doctor Where DocName='" + txtName.Text + "' , Gender='" + chk1.Text + "' , BirthDate='" + dtpBDate.Text + "' , Address='" + txtAddress.Text + "' , Salary='" + txtSalary.Text + "')" 

は後日、プロジェクトを改善したり、生産のコードを書きたいなら、あなたはSQLインジェクションを防ぐことを見たいと思うでしょう。始めるときに心配しないで心に留めておいてください! ... SQLインジェクションを防ぐには、ユーザーのフィールドをSQLクエリーに直接入れるのではなく、SQLインジェクションを使用してデータベースに悪いことをすることができます(たとえば、txtName.Textが"'; Delete * FROM Doctor;"に設定されている場合など)。 ..)

+0

リトルセメスタープロジェクト。私は彼/彼女が基本から始めることは大丈夫だと思います。 – jitendragarg

+0

試してみましたが、うまくいかず、同じエラーが表示されました。 –

関連する問題