假设我有一个SQL Server数据库,除了其他表之外,还有一个名为Mail
的表,该表具有与之关联的预期收件人,发件人,邮件正文等,其中一个是属性Priority
,基本上表示邮件是否具有高优先级,正常优先级或低优先级。由于我只使用这些少量的值(如果要添加更多的值,那就不会那么多),我决定优先级为tinyint
类型,而在我的代码中我代表的是enum
类型。
我的问题是,在调用数据库时插入和检索此属性的正确方法是什么?在检索的情况下(使用DataRow
),我有:
mail.Priority = (MailPriority)(byte)row["Priority"];
插入:
parameter = new SqlParameter("@Priority", SqlDbType.TinyInt);
parameter.Value = (byte)mail.Priority;
statement.Parameters.Add(parameter);
(Where语句为SQLCommand
)。
这样做会有效吗?这是正确的方法吗?我认为使用tinyint
是可以的,因为可能的值不会很多,但我不知道int
是否会好,在性能方面更好,或者更常用的等等。
答案 0 :(得分:7)
性能和空间不一样 从性能角度来看,.NET实际上可以更快地访问Int32 你得到的是SQL中的空间节省 你还应该将enum定义为byte。
public enum enumSVMV : byte { SV = 0, MV = 1, none = 2 };