gpt4 book ai didi

c# - SQL Server 中的 tinyint 到 C# 中的字节

转载 作者:太空狗 更新时间:2023-10-30 00:24:21 26 4
gpt4 key购买 nike

在数据库管理和应用程序开发中,我们必须注意空间和内存要求。我一直被教导要使用占用最少空间的数据类型来满足您的需求。

在我的场景中,我在表中有一列存储值 {0,1,2,3,4} (SQL Server 2012)。为此,我选择使用 tinyint 数据类型。这些值从数据库中提取到 C# 应用程序中。目前,我无法将此 tinyint 数据类型转换为字节。当我尝试时,出现错误“无法将 int 隐式转换为字节”。如果我将应用程序中的数据类型更改为整数,我就可以很好地提取它。与字符串相同。

出于性能目的,在我通常使用字节的整个应用程序中使用整数是否可以?如果不是,如何将整数转换为字节?

这是我使用的错误代码:

string strSQL = "SELECT securityLevel FROM security WHERE employeeID=@empID;";

using (SqlConnection dbConn = new SqlConnection(connParam))
{
dbConn.Open();

byte level = 0;

using (SqlCommand dbCommand = new SqlCommand(strSQL, dbConn))
{

dbCommand.CommandType = System.Data.CommandType.Text;
dbCommand.Parameters.AddWithValue("@empID", "12345");

using (SqlDataReader dbReader = dbCommand.ExecuteReader())
{
while (dbReader.Read())
{
level = dbReader.GetByte(0);
}
}

}

Console.WriteLine(level);
Console.ReadLine();

}

我也试过:

level = (byte)dbReader.GetValue(0);

最佳答案

是的,如果您只存储 0 - 4,您选择 TINYINT 作为数据类型是正确的。

是的,TINYINT 等同于 .Net 中的一个 byte。您可以在此处查看映射列表: http://msdn.microsoft.com/en-us/library/cc716729(v=vs.110).aspx

不,您在创建表时实际上并没有使用 TINYINT,否则您不会收到此错误。错误消息非常具体地指出源数据类型是 INT

不,不要使用INT 来存储这些值。这是不必要的,您尝试做的事情(即 TINYINTbyte)是完全有效的,我已经做过很多次了。

假设您在该表中没有数百万行数据并且对它的持续命中,请运行以下命令:

ALTER TABLE [security] ALTER COLUMN [securityLevel] TINYINT NOT NULL;

(我假设该列当前为 NOT NULL,在这种情况下,如果您在 ALTER TABLE 中保留 NOT NULL > 语句,它会将字段更改为 TINYINT NULL。如果该字段当前不是 NOT NULL,则只保留该部分)

关于c# - SQL Server 中的 tinyint 到 C# 中的字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26349930/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com