2011-01-28 26 views
0
 // Add into DB 
     using (tblArtworkTemplatesTableAdapter tblAdapter = new tblArtworkTemplatesTableAdapter()) 
     { 
      tblAdapter.Insert(DateTime.Now, "@specID"); 
      "@specID" = int.Parse(lstChooseSpec.SelectedValue) 
     } 

私のコードが間違っていることを知っています。私の目的を説明するために、どのように入力をパラメタイズしますか?ASP.net c#簡単な質問パラメータ質問

答えて

2

一般的にはそれに依存します。 LINQ to SQLやNHibernateのようなORMを使用している場合は、あなたには何の質問もありません。あなたがPlain ADOオブジェクト(私がそうであると思われる)を使ってそれをやっているなら、Command(またはSQLCommandや他のICommand実装)オブジェクトを用意してSQLParameterクラス(または他のパラメータクラス)を使用する必要があります。

ICommandには、任意に編集できるパラメータのコレクションがあります。

SqlCommand cmd = new SqlCommand(
      "select * from STH where column = @SpecID", conn); 

    //it might be useful to specify a type as well 
    SqlParameter param = new SqlParameter(); 
    param.ParameterName = "@SpecID"; 
    //I woudl use the TryParse method though 
    param.Value   = int.Parse(lstChooseSpec.SelectedValue); 

    cmd.Parameters.Add(param); 
+0

DALを使用していますが、パラメタイズの入力を心配する必要はありますか、それとも私のために行うのでしょうか? –

+0

それはDALによって異なります。私はAPIを知らない。一般的にDALはあなたのために行います。通常のC#データ値を渡す必要があり、パラメータ化自体は面倒です – luckyluke

1

このライン

"@specID" = int.Parse(lstChooseSpec.SelectedValue) 

が正しくありません。定数に値を代入することはできません。あなたは

specId = int.Parse(lstChooseSpec.SelectedValue); 

コードの残りの部分は混乱してのようなものを意味するかもしれません。 lstChooseSpec.SelectedValueを解析して、それをDateTimeとしてアダプタに追加しようとしているのはなぜですか? C#は厳密に型指定されています:何かはintまたはDateTimeですが、両方にすることはできません。

残りの方法を掲載できる場合は、役立つ可能性があります。

Also, have a look at this overview on MSDN.

+0

私は2つの値を挿入しようとしています。最初はDateTime、2番目は整数です。 SQLインジェクションを避けるためにinseryクエリーの2番目の入力をパラメータに設定したい –