C#:映射IDataReader.GetTableSchema()和DbType枚举?
|
所以,我有以下内容:
\"SELECT * FROM MyTable;\"
当我执行以下操作时,我得到了TableData,这很有用,但仍然有一些未知的地方?
//CommandBehavior.KeyInfo seems to actually return the correct primary keys
// not so much with CommandBehavior.SchemaOnly.
IDataReader reader = command.ExecuteReader(CommandBehavior.KeyInfo)
DataTable table = reader.GetSchemaTable();
现在,当遍历我的表时,我遇到了一个名为\“ DataType \”的列,它是System.String或System.Byte []或System.Int32等。但是,这只告诉我要存储的.NET类型,但不会告诉我例如System.Decimal
是DbType.Currency
还是DbType.Decimal
。因此,当我创建IDataParameter时,我不确定为DbType设置什么。
parameter.ColumnName = columnName;
parameter.DbType = DbType.Decimal; (or should it have been Currency?)
基本上,我如何获得表的真实模式……还是有关系?
没有找到相关结果
已邀请:
2 个回复
先对冈蒲
命令 编辑您使用的是IDbCommand,而不是SqlCommand。我知道SqlCommand和Oracle命令都不需要您指定DbType,但是我不知道其他框架是否需要您显式设置DbType。这是将system.type转换为DbType枚举值的方法:
http://social.msdn.microsoft.com/Forums/en/winforms/thread/c6f3ab91-2198-402a-9a18-66ce442333a6 希望这有助于更好地阐明。 http://msdn.microsoft.com/zh-CN/library/system.data.sqlclient.sqlparametercollection.addwithvalue.aspx
岭取
可悲的是,如果您使用IDbCommand,则不能在一行中完成。你不能像ѭ9那样做 另外,您不需要设置参数的DbType。正确的映射会自动为您完成:)