我有一个来自存储过程的字符串,如'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”
但是,我不希望修剪前导零。 任何人都可以帮我解决这个问题吗?
答案 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.中包装诸如命令和读者之类的东西的习惯。即使你的代码抛出你不留下任何东西,你也可以避免关闭和处理东西并保证。