gpt4 book ai didi

c# - 从数据库 smallint 到 C# nullable int 的转换错误

转载 作者:行者123 更新时间:2023-11-30 20:04:13 24 4
gpt4 key购买 nike

我在 smallint 数据类型的数据库中有一个 security_role_cd 列。我使用以下代码将此列选择到 nullable int 变量中。

出现以下错误:

Error 3 Type of conditional expression cannot be determined because there is no implicit conversion between 'null' and 'short'

克服此错误的正确代码是什么?

SELECT R.security_role_cd  FROM Security_Role R WHERE security_role_name = 'Admin'

C#

        int? roleID = null;
string commandText = "SELECT R.security_role_cd FROM Security_Role R WHERE security_role_name = @roleName";
SqlCommand command = new SqlCommand(commandText, connection);
command.CommandType = System.Data.CommandType.Text;
command.Parameters.AddWithValue("@roleName",roleName);
SqlDataReader readerRole = command.ExecuteReader();
if (readerRole.HasRows)
{
while (readerRole.Read())
{
roleID = readerRole.GetInt16(0) == 0 ? null : readerRole.GetInt16(0) ;

}
}
readerRole.Close();

最佳答案

它只需要知道如何键入 null:

roleID = readerRole.GetInt16(0) == 0 ? (int?)null : (int)readerRole.GetInt16(0);

不过我个人会缓存这个值:

int tmp = readerRole.GetInt16(0); // implicit widening to int here
roleID = tmp == 0 ? (int?)null : tmp;

尽管我也怀疑将 0 转换为 null 是否明智 - 最好使用 IsDBNull - 类似于:

if(reader.IsDBNull(0)) {
roleID = null;
} else {
roleID = (int)readerRole.GetInt16(0);
}

关于c# - 从数据库 smallint 到 C# nullable int 的转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13265704/

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