C# 如何将int转换成字节数组?

C# 如何将int转换成字节数组?,c#,asp.net,sql-server,stored-procedures,C#,Asp.net,Sql Server,Stored Procedures,我有一个表,其中有一列名为: 'eZip'(varbinary(5),null) 现在,我正在从以下web表单中添加价值: cmd.Parameters.Add("@eZip", SqlDbType.VarBinary).Value = BitConverter.GetBytes(int.Parse(txtZip.Text.ToString())); 它可以工作,但不是输入有效的邮政编码,而是将以下内容插入我的专栏: <Binary data> 我做错了什么?我不认为你本身

我有一个表,其中有一列名为:

'eZip'(varbinary(5),null)

现在,我正在从以下web表单中添加价值:

 cmd.Parameters.Add("@eZip", SqlDbType.VarBinary).Value = BitConverter.GetBytes(int.Parse(txtZip.Text.ToString()));
它可以工作,但不是输入有效的邮政编码,而是将以下内容插入我的专栏:

<Binary data>


我做错了什么?

我不认为你本身做错了什么。如果将字段定义为varbinary,则无论数据是什么,都会在SQL Server的管理工具中看到“二进制数据”


你确定你不想只使用
CHAR(n)
VARCHAR(n)
作为邮政编码吗?

我不认为你自己做错了什么。如果将字段定义为varbinary,则无论数据是什么,都会在SQL Server的管理工具中看到“二进制数据”


是否确实不希望邮政编码仅为
CHAR(n)
VARCHAR(n)

如果无法更改该列的数据类型,则只需在获取数据时转换值即可。正如其他人所建议的,您至少应该更改代码,使其假定五个字节是字符,而不是整数

插入值:

 cmd.Parameters.Add("@eZip", SqlDbType.VarBinary).Value = System.Text.Encoding.ASCII.GetBytes(txtZip.Text.ToString()); 
在SSMS工具中检索值:

SELECT CONVERT(VARCHAR(5), [eZip]) AS [eZip] FROM @zip_table;
从C#中的
数据行dr
中检索值:


如果可以将列更改为CHAR(5)或VARCHAR(5),则无需进行任何转换。

如果无法更改该列的数据类型,则只需在获取数据时转换值即可。正如其他人所建议的,您至少应该更改代码,使其假定五个字节是字符,而不是整数

插入值:

 cmd.Parameters.Add("@eZip", SqlDbType.VarBinary).Value = System.Text.Encoding.ASCII.GetBytes(txtZip.Text.ToString()); 
在SSMS工具中检索值:

SELECT CONVERT(VARCHAR(5), [eZip]) AS [eZip] FROM @zip_table;
从C#中的
数据行dr
中检索值:



如果您可以将列更改为CHAR(5)或VARCHAR(5),则无需进行任何转换。

您为什么说它正在将其插入您的列中?如果您正在数据库中存储邮政编码,请将该列设置为
CHAR
VARCHAR
。首先,将邮政编码转换为
int
是个坏主意,然后将
int
转换为二进制是另一个坏主意。@Adam:我检查过了。我的SP在MSSQL 2008中。@Musi:那么MSSQL 2008中Zip的最佳数据类型应该是什么?@Mayank:任何RDBMS中zipcode的最佳类型都是字符串类型,可以是
char
varchar
。如果你只打算处理我们的邮政编码,
char(5)
(或者
char(10)
,如果你想处理连字符+4)将是最好的选择。你为什么说它会将其插入到你的列中?如果你在数据库中存储邮政编码,请将列
char
varchar
。首先,将邮政编码转换为
int
是个坏主意,然后将
int
转换为二进制是另一个坏主意。@Adam:我检查过了。我的SP在MSSQL 2008中。@Musi:那么MSSQL 2008中Zip的最佳数据类型应该是什么?@Mayank:任何RDBMS中zipcode的最佳类型都是字符串类型,可以是
char
varchar
。如果您只打算处理美国邮政编码,
char(5)
(或
char(10)
,如果您想处理连字符+4)将是最佳选择。邮政编码不是整数,而是字母数字数据(在美国)仅由五个数字或九个数字和连字符组成。那么MSSQL 2008中Zip的最佳数据类型应该是什么?@Adam如果您是正确的,我将进行编辑以指定字符或连字符Varchar@Mayank美国最全面的邮政编码格式是“zip+4”格式,即NNN-xxxx格式。所以VARCHAR(10)可能就足够了,因为它可以保存5位或9位版本。邮政编码不是整数,它们是字母数字数据(在美国)只由5位数字或9位数字和连字符组成。那么MSSQL 2008中Zip的最佳数据类型应该是什么呢?@Adam你是对的,我将编辑以指定字符或Varchar@Mayank美国最全面的邮政编码格式是“zip+4”格式,即NNN-xxxx格式。所以VARCHAR(10)可能就足够了,因为它可以保存5位或9位版本。