C# 数据读取器修剪前导零
我有一个来自存储过程的字符串,看起来像“001234567”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
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如果不能更改存储过程,这可能是唯一的解决方案。