C# 数据读取器修剪前导零

C# 数据读取器修剪前导零,c#,asp.net,sql-server,stored-procedures,sqldatareader,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 ret

我有一个来自存储过程的字符串,看起来像“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”

但是,我不希望前导零被修剪。
有谁能帮我解决这个问题吗?

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

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

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

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

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

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

如果使用0而不是

GetValue(0).ToString()
你用

GetString(0)
?


还有一件事——养成将命令和读卡器之类的东西包装在文件中的习惯,这样你就可以避免关闭和处理这些东西,并且即使代码抛出,你也不会留下任何东西。

如果

GetValue(0).ToString()
你用

GetString(0)
?


还有一件事-养成将命令和读卡器之类的东西包装在内存中的习惯,这样可以避免关闭和处置内容,并且即使代码抛出,也可以确保不会留下任何东西。

如果您有权访问存储过程,请确保它返回字符串。因此:

select GroupNumber
而不是,例如:

select cast(GroupNumber as int) as GroupNumber

如果您有权访问存储过程,请确保它返回字符串。因此:

select GroupNumber
而不是,例如:

select cast(GroupNumber as int) as GroupNumber

在循环中关闭读卡器不是一个坏主意吗?C#中没有任何东西表示前导零将被修剪。我猜问题出在存储过程中。你能把程序贴出来吗?同时发布来自SQL管理工作室的EXEC csp_Bbp_OBN_GetBasePageList的结果。Thx.在循环中关闭读卡器不是一个坏主意吗?C#中没有任何东西表示前导零将被修剪。我猜问题出在存储过程中。你能把程序贴出来吗?同时发布来自SQL管理工作室的EXEC csp_Bbp_OBN_GetBasePageList的结果。Thx.如果字段作为数字发送,则前导零在服务器上丢失。所以这没用。OP说他正在从存储过程返回一个varchar。该字段作为varchar而不是number发送。。我甚至执行它来查看结果,它在存储过程执行后有前导零。所以,我怀疑读卡器做错了什么。如果字段作为数字发送,则前导零在服务器上丢失。所以这没用。OP说他正在从存储过程返回一个varchar。该字段作为varchar而不是number发送。。我甚至执行它来查看结果,它在存储过程执行后有前导零。所以,我怀疑读者是否做错了什么。+1如果不能更改存储过程,这可能是唯一的解决方案。+1如果不能更改存储过程,这可能是唯一的解决方案。