2011-11-15 53 views
3

我是新来的MS Access 2007,我正在创建一个应用程序使用Visual Studio 2010 C#。我想知道我应该在我创建的每个参数中使用哪种数据类型。什么是正确的数据类型用于一个号码

例如:

command.Parameters.Add(new OleDbParameter("?company_name", OleDbType.VarChar)); 

这是个字符(纠正我,如果我错了)的数据类型。

我的问题是,什么是数字数据类型(例如:邮政编码和电话号码(221-0019))使用的是正确使用数字数据类型?

P.S:我已经有我的表在MS Access

+0

您是否已经制作了桌子? – BoltClock

+0

@BoltClock:我已经在MS Access中创建了一个表格,我使用的数据类型是NUMBER。 – sean

+0

和字段大小? – Reniuz

回答

1

使用任何数据类型适合您的数据。

E.g.如果需要列存储0到100之间的整数,请使用DataTypeNumberFieldSizeByte。对于0到10,000之间的整数,请使用Integer。对于-1,000,000,000至1,000,000,000之间的分数,使用Single。请参阅DataTypeFieldSize的MSAcess帮助以了解适用于您的数据的内容。

然后,从C#操作数据库时,请使用等效的OleDbType。请参阅OldDbType的帮助以确定哪一个与MSAccess列中的数据类型等效。

E.g. (根据以上示例)OleDbType.UnsignedTinyIntOleDbType.SmallInt,OleDbType.Single

+0

+1。这就是我在询问场地大小时的想法:) – Reniuz

1

将数据值存储为数字或字符时有几件事需要考虑。你应该知道以下问题。

  1. 如果有人决定在邮编或电话号码中输入非数字字符,您会做什么?处理上面的例子,您需要删除像(222)221-0019这样的电话号码的所有非数字字符。更好的解决方案是在数据输入到数据库之前清理数据,但将其存储为字符仍然可以享受其优点。
  2. 排序。请注意,订购字符与数字可能会产生一些不良结果。请注意,数字1,11和2按字母顺序与数字顺序不同。排序后的alpha,正确的顺序是1,11,2.在数字上,它们被排序为1,2,11。这是决定将数据值存储为数字或字符字段时的考虑因素。
  3. 空间。将它们存储为整数需要4个字节。如果将它们存储为字符,则5位数的zip需要5个字节,如果使用unicode,则需要10个字节。你可能不会保存一个天文数量的空间,所有事情都考虑在内,所以1和2应该是更大的考虑因素。

数据库是关于存储数据。你应该真的考虑存储值的意图。通常情况下,如果数字是实际的数字值,那么您只需要将数字存储为数字,这样您就可以进行数字操作。例如,金钱,年龄,雇用的年数。

至于通常都是数字的标识符,例如社会安全号码,街道号码,电话号码,这些确实没有数字。他们是只能使用数字的“字符”值。你想将它们作为字符存储的原因是,当它们从数据库中引入它们时,如果你期望主要做基于字符的操作,那么你必须不断地将它们从数字转换为字符值。

权衡利弊。祝你好运!

相关问题