Считыватель данных обрезает ведущие нули - PullRequest
0 голосов
/ 13 января 2011

У меня есть строка из хранимой процедуры, похожая на '001234567'.

sqlCommand = new SqlCommand("csp_Bbp_OBN_GetBasePageList", BBConnection);
sqlCommand.CommandType = System.Data.CommandType.StoredProcedure;

 sqlCommand.Connection.Open();

// Run the SQL statement, and then get the returned rows to the DataReader.
accReader = sqlCommand.ExecuteReader();

 while (accReader.Read())
{    
      BasePage basePage = new BasePage();
      basePage.GroupNum= accReader.GetValue(0).ToString().Trim();
      basePageList.Add(basePage);
      accReader.Close();
      accReader.Dispose();
}
return basePageList;

В моем случае из хранимой процедуры я возвращаю varchar, после выполнения и чтения я получаю значение basePage.GrouNum, которое является строкой. Итак, я не вижу, где обрезать ведущие нули.

Пример: GroupNumber в таблице: "001234567" BasePage.GroupNum после чтения из DataReader: «1234567»

Но я не хочу обрезать ведущие нули. Кто-нибудь может мне помочь, как решить эту проблему?

Ответы [ 3 ]

2 голосов
/ 13 января 2011

Вы можете преобразовать его в целое число, а затем отформатировать полученную строку:

basePage.GroupNum = Convert.ToInt32(accReader.GetValue(0)).ToString("000000000")

Использование 0 в качестве спецификаторов формата должно дополнить строку результата соответствующим образом.

1 голос
/ 13 января 2011

Если у вас есть доступ к хранимой процедуре, убедитесь, что она возвращает строку.Итак:

select GroupNumber

вместо, например:

select cast(GroupNumber as int) as GroupNumber
0 голосов
/ 13 января 2011

Что произойдет, если вместо

GetValue(0).ToString()

вы используете

GetString(0)

?

Еще одна вещь - привычка заключать в себе такие вещи, как команды и читателив используя операторы. Вы можете избежать закрытия и утилизации и быть уверенным, даже если ваш код выдает, вы ничего не оставляете.

...