2013-06-19 51 views
0

這是驅動我餅乾!想想我已經嘗試了一切,只是無法弄清楚發生了什麼事情。更糟糕的是,我無法訪問SQL服務器上的SQL Profiler。Command.Parameters&Apostrophe

測試值被送往方法是「巴爾黑德城市婦女」的協會集」

正如你看到的,我使用的是替換改變單一的撇號爲雙。我在想這是搞砸了SQL!

我的查詢沒有返回任何結果時,我管的值到命令的參數。但是,如果我只是將變量直接包含到查詢中,它就可以工作。

下面是該查詢(其被剝離下來簡潔):

public DataTable select_advancedSearch(string collection) 
     { 
     string cnn = ConfigurationManager.ConnectionStrings[connname].ConnectionString; 
      using (SqlConnection connection = new SqlConnection(cnn)) 
      { 
       string SQL = string.Empty; 
       SQL = "SELECT tbl1.ResourceID, tbl1.ItemTitle, tbl1.Type, tbl1.Description, tbl1.CollectionTitle "; 
       SQL += "FROM [ercHeritage].[dbo].[ERC_HERITAGE_CORE] tbl1 "; 
       SQL += "WHERE tbl1.CollectionTitle LIKE '%'+ @Input1 +'%' "; 
       using (SqlCommand command = new SqlCommand(SQL, connection)) 
       { 
        command.Parameters.Add("@Input1", SqlDbType.NVarChar,255); 
        command.Parameters["@Input1"].Value = collection.Replace("'", "''").Trim(); 
        DataTable MyTable = new DataTable(); 
        try 
        { 
         connection.Open(); 
         SqlDataAdapter MyAdaptor = new SqlDataAdapter(); 
         MyAdaptor.SelectCommand = command; 
         MyAdaptor.Fill(MyTable); 
        } 
        catch (Exception) 
        { 
         System.Web.HttpContext.Current.Response.Write("There was a problem with your request."); 
        } 
        return MyTable; 
       } 
      } 
     } 

任何答案感謝!

謝謝Alan Alan

回答

0

有沒有必要在參數值中轉義撇號。只有在命令文本中包含字符串文字的情況下才這樣做。

+0

似乎已經做到了!非常感謝:) –

+0

工作!非常感謝。 –

相關問題