1
 SQLHelper sqhlpr = new SQLHelper();
    sqhlpr.SqlText = "Select StudentName from tblStudentInfo where class=" + NurseryButton.Text;
    DataTable dt = sqhlpr.getDataTable(false);

これは私のコードです.今 sqhlpr.sqlText の結果は

select StudentName from tblStudentInfo where class= **Nursery**

(ieNurseryButton.Text=Nursery) しかし、私が望む結果は、class= ' Nursery' のtblStudentInfoから StudentName を選択することです。これは単純に見えますが、私はそれを理解することはできません...

4

3 に答える 3

2
"Select StudentName from tblStudentInfo where class='" + NurseryButton.Text + "'";

しかし、絶対にそのように使用しないでください。( SQL インジェクション)

良い答えは次のとおりです。パラメーターを使用した SQL インライン クエリです。クエリの実行時にパラメータが読み取られない

于 2013-03-12T15:10:19.190 に答える
0

クエリは文字列です。あなたがやる:

result = "somestring" + someVariable;

ここsomeVariableで、単一の引用符で囲みます。これは次のように行われます。

result = "somestring" + "'" + someVariable + "'";

または短い:

result = "somestring'" + someVariable + "'";

ただし、手動でクエリを作成することは「完了していない」ことに注意してください。パラメーター化されたクエリや、Entity Framework のような O/R マッパーなどのツールを検討する必要があります。

于 2013-03-12T15:12:59.330 に答える
0

次のコードは、あなたが望むことを行います:

SQLHelper sqhlpr = new SQLHelper();
sqhlpr.SqlText = "Select StudentName from tblStudentInfo where class = '" + NurseryButton.Text + "'";
DataTable dt = sqhlpr.getDataTable(false);

ただし、さらに 2 つのことを考える必要があります。

  1. 誰かが NurseryButton.Text にアポストロフィを挿入するとどうなりますか
  2. SQLHelper はこのようなことから保護しますか、それとも自分で行う必要がありますか

データベースへの入力が安全に行われるように、何らかの方法でパラメーター化されたクエリまたはストアド プロシージャを検討する必要があります。

于 2013-03-12T15:13:13.533 に答える