数据读取器修剪前导零

时间:2011-01-13 15:37:38

标签: c# asp.net sql-server stored-procedures sqldatareader

我有一个来自存储过程的字符串,如'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” 从DataReader读取后的BasePage.GroupNum:“1234567”

但是,我不希望修剪前导零。 任何人都可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

您可以将其转换为整数,然后格式化出去的字符串:

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

使用0作为格式说明符应该适当填充结果字符串。

答案 1 :(得分:1)

如果您有权访问存储过程,请确保它返回一个字符串。所以:

select GroupNumber

而不是,例如:

select cast(GroupNumber as int) as GroupNumber

答案 2 :(得分:0)

如果不是

,会发生什么
GetValue(0).ToString()

你使用

GetString(0)

另一件事 - 养成在using statements.中包装诸如命令和读者之类的东西的习惯。即使你的代码抛出你不留下任何东西,你也可以避免关闭和处理东西并保证。