首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >企业库dbcommand AddInParameter方法

企业库dbcommand AddInParameter方法
EN

Stack Overflow用户
提问于 2011-08-30 03:52:01
回答 2查看 5.7K关注 0票数 2

我已经使用企业库很长时间了。我们正在将数据库中的列类型varchar更改为nvarchar以支持不同的语言。我们确实有一些使用传统方式连接到数据库的遗留代码,比如使用命令对象。在代码中,当创建sqlparameters时,指定参数数据类型是int还是varchar。在那里很容易从varchar更改为nvarchar。

但我想知道在使用企业库时,我们指定.net数据类型,如字符串,我相信企业库在调用存储过程时会在内部将该类型转换为sqldatatype。

排序(命令,“@db.AddInParameter”,DbType.String,SortOrder)

企业库内部转换的数据类型是什么?varchar还是nvarchar?在遗留代码中到处使用nvarchar安全吗?

EN

回答 2

Stack Overflow用户

发布于 2011-08-30 04:01:05

正如我在评论中所说,不需要担心数据类型转换.net会自动处理和处理它。ADO.net能够将String数据类型转换为varcharnvarcharcharntext和SqlServer中的text数据类型。指定存储过程数据类型将通知ADO.net在SqlServer中将数据转换为其适当的数据类型。

为什么我们要在创建

对象时指定数据类型,或者在.net负责的情况下调用AddInParameter?

编辑:根据您在评论中提出的问题,有:

代码语言:javascript
复制
db.Parameters.AddWithValue("@SortOrder", SortOrder);

这不是指定输入参数的数据类型所必需的。

票数 2
EN

Stack Overflow用户

发布于 2011-08-30 22:08:28

我假设您使用的是SQL Server。

DbType.String用于nvarchar,而DbType.AnsiString用于varchar。http://msdn.microsoft.com/en-us/library/system.data.dbtype.aspx

由于您正在调用存储过程,因此您的参数将自动转换为在存储过程中指定的任何字符串类型。例如,如果输入是DbType.String,但参数是varchar,则SQL Server会为您转换它。但是不要反向操作(在DbType.AnsiString中的代码中,但是存储过程需要nvarchar),因为您只能在存储过程中获得ansi字符。

代码语言:javascript
复制
//Don't do this! you will get 'h?ello' in the SP instead of 'hܒello'
SqlParameter("input", "h\u0712ello") { DbType = System.Data.DbType.AnsiString });

此外,在EntLib中,有一种方法可以调用存储过程,而无需指定参数名称和数据类型。如下所示:

代码语言:javascript
复制
//calls AddToInventory stored procedure
//the 2 parameters are automatically mapped.
db.ExecuteNonQuery("AddToInventory", 1, "Life Jacket");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7235135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档