Аналог SqlCommand.Parametrs.Add в DataSet.Tables[].Select
От: Igore Россия  
Дата: 07.12.06 15:15
Оценка:
Мне нужен этот аналог

DataSet allDS = new DataSet("allTable");
DataRow[] dr = null;
dr = allDS.Tables["tblClient"].Select("clientName='"+cmbClient.Text+"'")[0].GetChildRows(allDS.Relations["ClipsFromClientName"]);

При cmbClient.Text="[]fdsa][]''";//С управляющими символами
Select падает, мну нужен аланог SqlCommand.Parametrs.Add, ну или как из SqlCommand вытянуть правильный параметр.
Re: Аналог SqlCommand.Parametrs.Add в DataSet.Tables[].Selec
От: _FRED_ Черногория
Дата: 07.12.06 15:56
Оценка: 13 (3)
Здравствуйте, Igore, Вы писали:

I>Мне нужен этот аналог


аналога стандартного нету

I>DataSet allDS = new DataSet("allTable");
I>DataRow[] dr = null;
I>dr = allDS.Tables["tblClient"].Select("clientName='"+cmbClient.Text+"'")[0].GetChildRows(allDS.Relations["ClipsFromClientName"]);

I>При cmbClient.Text="[]fdsa][]''";//С управляющими символами
I>Select падает, мну нужен аланог SqlCommand.Parametrs.Add, ну или как из SqlCommand вытянуть правильный параметр.

Неокторые символы (называемые "специальные") надо "заэскэйпить". Например, так:
    public static string EscapeLikeExpression(string expression) {
      if(expression == null) {
        throw new ArgumentNullException("expression");
      }//if

      StringBuilder value = new StringBuilder(expression);
      int i = 0;
      while(i < value.Length) {
        char ch = value[i];
        switch(ch) {
        case '[': // Escape special characters
        case ']':
        case '*':
        case '%':
          value.Remove(i, 1).Insert(i, '[').Insert(++i, ch).Insert(++i, ']');
          i++;
          break;
        default:
          i++;
          break;
        }//switch
      }//while
      return value.ToString();
    }

Использовать, соответственно, так:
  dr = allDS.Tables["tblClient"].Select("clientName='" + EscapeLikeExpression(cmbClient.Text) + "'")[0].GetChildRows(allDS.Relations["ClipsFromClientName"]);
Help will always be given at Hogwarts to those who ask for it.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.