1

SQL コマンドを取得してデータセットを返す関数があります。今、私はこの文字列コマンドを実行しようとしています:

@"SELECT ProductPrice 
FROM Products 
Where ProductPrice IN 
(
  SELECT ProductPrice 
  FROM Products 
  WHERE  ProductName =N'" 

+ listBox1.Text 
+ "')").Tables[0].Rows[0].ToString()

ProductPriceですINT
ProductName_NVARCHAR

テキストボックスに次の結果が表示されます。

' System.Data.DataRow '

ところで:これは学校のプロジェクトです!これは SQL インジェクションに対して脆弱である可能性があることを知っています

4

2 に答える 2

2

これは宿題の質問なので、宿題の質問のガイドラインに固執し、完全な回答を提供せずに役立つようにします.

  • 質問者を正しい方向に導くような説明を提供するようにしてください。真の理解は学生にとって真の目標ですが、それを提供しようとすることは、どの質問に対しても評価されないことはめったにありません.
  • 通常、最善の判断を下して、学生の役に立たないと思われる場合は、完全なコード サンプルを提供しない方がよいでしょう。最初に疑似コードを使用できます。プログラミング リソースを作成するという精神で、適切な時間の後に戻ってきて、応答を編集してより完全なコードを含めることができます。この方法では、学生は独自のコードを作成する必要がありますが、課題が終了した後に完全なソリューションを利用できるようになります。

まず、サンプルにいくつかのコードがありませんが、結果に基づいて、コードに次のようなものが含まれていると想定しています。

TextboxResults.Text = MyTable.Rows[0].ToString();

System.Data.DataRow を取得する理由は、オブジェクトのコレクションである行 (データ アダプターによって埋められたテーブルの最初の行) のみを参照しているためです。

ヒント: select ステートメントでは、価格は既に参照している Row内の最初の要素(0 ベースのインデックス) にあります。

短いバージョン: テーブルの最初の行を参照しています。テーブルの最初の行の最初のセルの内容を参照する必要があります。

優れた開発者であるということは、多くの場合、検索の使い方を知っていることを意味するため、次のフレーズを Google で検索し、今言ったことを適用すると、答えが得られるはずです。

テーブル内の特定のデータ行のセルにアクセスする方法

2 番目のヒント:

最初の行の最初のセルの内容に書き込むとしたら、次のようになります。

myTable.Rows[0][0] = 1.99;

それ以外の

myTable.Rows[0] = 1.99;
于 2013-04-02T19:11:07.927 に答える
1

シュムリック、

を使用して印刷しようとしていると思いますdataRow.ToString()。オブジェクトには異なる列が含まれている可能性があるため、C# は DataRow 型のオブジェクトを出力する方法を知りません。ProductPrice を印刷したい場合は、dataRow[0].ToString()代わりに試してください。

于 2013-04-02T19:10:53.847 に答える