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

我知道代碼是錯誤的,只是爲了說明我的目標,我該如何對輸入進行paramatise?ASP.net c#簡單查詢參數問題

回答

2

一般來說,要看情況。如果你正在使用LINQ to SQL或NHibernate等任何類型的ORM,它會爲你做任何問題。如果YOu正在使用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,我是否需要擔心輸入異常或者是否會爲我執行? – 2011-01-28 17:14:03

1

此行

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

不正確。您不能將值分配給常量。你可能意味着像

specId = int.Parse(lstChooseSpec.SelectedValue); 

的代碼的其餘部分是混亂的。爲什麼要將lstChooseSpec.SelectedValue解析爲一個整數,然後嘗試將它作爲DateTime添加到適配器? C#是強類型的:東西是intDateTime,但不能同時爲二者。

如果您可以發佈該方法的其餘部分,它可能會有所幫助。

Also, have a look at this overview on MSDN.

+0

我想插入兩個值,第一個是DateTime,第二個是整數。我想將第二個輸入放入insery查詢參數中以避免SQL注入 – 2011-01-28 17:12:12