gpt4 book ai didi

C# SQL null convert to-from,这有什么问题吗?

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:30 27 4
gpt4 key购买 nike

这似乎对我有用,但想知道它是否有任何问题

 class Test
{
public int PKId { get; set; }
public string RequiredString { get; set; }
public int RequiredInt { get; set; }
public decimal RequiredMoney { get; set; }
public bool RequiredBool { get; set; }
public DateTime RequiredDate { get; set; }
public string NullableString { get; set; }
public int? NullableInt { get; set; }
public decimal? NullableMoney { get; set; }
public bool? NullableBool { get; set; }
public DateTime? NullableDate { get; set; }
}

就空值而言,testDatabase 与类匹配。

  static internal T NullConvertFromDB<T>(object value) 
{
if (value.Equals(DBNull.Value))
{
return default(T);
}
else
{
return (T)value;
}
}

static internal object NullConvertToDB<T>(object value)
{
if (value == null)
return System.DBNull.Value;
else
return (T)value;
}

在检索我使用的数据时

 Test test = new Test();
test.PKId = dr.GetInt32(0);
test.RequiredString = dr.GetString(1);
test.RequiredInt = dr.GetInt32(2);
test.RequiredMoney = (decimal)dr.GetSqlMoney(3);
test.RequiredBool = dr.GetBoolean(4);
test.RequiredDate = dr.GetDateTime(5);
test.NullableString = NullConvertFromDB<string>(dr[6]);
test.NullableInt = NullConvertFromDB<int?>(dr[7]);
test.NullableMoney = NullConvertFromDB<decimal?>(dr[8]);
test.NullableBool = NullConvertFromDB<bool?>(dr[9]);
test.NullableDate = NullConvertFromDB<DateTime?>(dr[10]);

插入我使用

 cmd.Parameters.AddWithValue("@RequiredString", test.RequiredString);
cmd.Parameters.AddWithValue("@RequiredInt", test.RequiredInt);
cmd.Parameters.AddWithValue("@RequiredMoney", test.RequiredMoney);
cmd.Parameters.AddWithValue("@RequiredBool", test.RequiredBool);
cmd.Parameters.AddWithValue("@RequiredDate", test.RequiredDate);
cmd.Parameters.AddWithValue("@NullableString", NullConvertToDB<string>(test.NullableString));
cmd.Parameters.AddWithValue("@NullableInt", NullConvertToDB<int?>(test.NullableInt));
cmd.Parameters.AddWithValue("@NullableMoney", NullConvertToDB<decimal?>(test.NullableMoney));
cmd.Parameters.AddWithValue("@NullableBool", NullConvertToDB<bool?>(test.NullableBool));
cmd.Parameters.AddWithValue("@NullableDate", NullConvertToDB<DateTime?>(test.NullableDate));

这很好用,但想知道在我的 DAL 中实现之前是否需要注意任何事项。

问候

_埃里克

最佳答案

作为一件小事,is可能会更有效率:

if (value == null || value is DBNull) {... null code...}

作为一个第二个想法,我不喜欢这样一个事实,如果 T=int你会得到0为空;我想要一个错误。我很想使用:

return (T)(object)null;

应该适用于引用类型和 Nullable<T>正确,并为 int 引发错误等


ConvertToDb , return (T)value;是多余的,因为你实际上是在返回 object ;你也可以:

return value ?? DBNull.Value;

(在这两种情况下)


所以:

    static internal T NullConvertFromDB<T>(object value) 
{
if (value == null || value is DBNull)
{
return (T)(object)null;
}
return (T)value;
}

static internal object NullConvertToDB<T>(object value)
{
return value ?? DBNull.Value;
}

关于C# SQL null convert to-from,这有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4207647/

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