我们从来不把枚举存储为数字序数值;它使调试和支持的方式太难了。我们将实际枚举值存储转换为字符串:
public enum Suit { Spade, Heart, Diamond, Club }
Suit theSuit = Suit.Heart;
szQuery = "INSERT INTO Customers (Name, Suit) " +
"VALUES ('Ian Boyd', %s)".format(theSuit.name());
然后用回读:
Suit theSuit = Suit.valueOf(reader["Suit"]);
问题是在过去盯着企业管理器,试图破译:
Name Suit
================== ==========
Shelby Jackson 2
Ian Boyd 1
经文
Name Suit
================== ==========
Shelby Jackson Diamond
Ian Boyd Heart
后者更容易。前者需要获取源代码并查找分配给枚举成员的数值。
是的,它需要更多的空间,但枚举成员名称很短,硬盘驱动器是便宜的,它是更值得帮助,当你有一个问题。
此外,如果您使用数值,您将被绑定到它们。你不能很好地插入或重新排列成员,而不必强制使用旧的数值。例如,将Suit枚举更改为:
public enum Suit { Unknown, Heart, Club, Diamond, Spade }
将必须成为:
public enum Suit {
Unknown = 4,
Heart = 1,
Club = 3,
Diamond = 2,
Spade = 0 }
以便维护存储在数据库中的遗留数值。