2011-01-19 179 views
1

我有我自己的DLL(用於數據訪問層)。我使用轉義字符技術來避免用戶輸入錯誤,但最近我決定使用參數化查詢來增強我的類,以防止出現所有可能的錯誤。修改是簡單還是困難?參數化查詢問題

如何轉換查詢以使用參數化查詢?

請給我看一些示例代碼來闡明這個想法。

回答

1

這是我將如何在c#.net和SQL服務器中完成它。

string sQuery = @"INSERT INTO [UserJob] 
             (
             [SIJCJOBID], 
             [SIJCCHDID], 
             [UserID], 
             [SageDatabaseID], 
             [MaxLineValue], 
             [MaxAuthorisationValue], 
             [UpdatedDate], 
             [UpdatedUser] 
            ) 
             VALUES 
             (
             @SIJCJOBID, 
             @SIJCCHDID, 
             @UserID, 
             @SageDatabaseID, 
             @MaxLineValue, 
             @MaxAuthorisationValue, 
             @UpdatedDate, 
             @UpdatedUser 
            ) 
             SELECT SCOPE_IDENTITY() AS 'ID'"; 

        using (SqlCommand oSqlCommand = new SqlCommand(sQuery)) 
        { 
         oSqlCommand.Parameters.AddWithValue("@SIJCJOBID", this.SIJCJOBID); 
         oSqlCommand.Parameters.AddWithValue("@SIJCCHDID", this.SIJCCHDID); 
         oSqlCommand.Parameters.AddWithValue("@UserID", this.UserID); 
         oSqlCommand.Parameters.AddWithValue("@SageDatabaseID", this.SageDatabaseID); 
         oSqlCommand.Parameters.AddWithValue("@MaxLineValue", this.MaxLineValue); 
         oSqlCommand.Parameters.AddWithValue("@MaxAuthorisationValue", this.MaxAuthorisationValue); 
         oSqlCommand.Parameters.AddWithValue("@UpdatedDate", DateTime.Now); 
         oSqlCommand.Parameters.AddWithValue("@UpdatedUser", StaticStore.CurrentUser != null ? StaticStore.CurrentUser.UserName : "SYSTEM"); 

         using (DataTable dt = DataTier.ExecuteQuery(oSqlCommand)) 
         { 
          if (dt.Rows.Count == 1) 
          { 
           int.TryParse(dt.Rows[0]["ID"].ToString(), out m_UserJobID); 
          } 
         } 
       }