如何强制SqlDataSource使用varchar参数?

时间:2008-11-19 14:45:13

标签: asp.net sql-server gridview sqldatasource varchar

我正在使用SqlDataSource来填充我的GridView,因为这两者似乎紧密耦合在一起。由于此网格显示搜索结果,因此我在我的代码隐藏中编写了一个动态sql字符串,该字符串引用了我传入的参数,如下所示:

sdsResults.SelectParameters.Add("CodeID", TypeCode.String, strCodeID)

我的问题是CodeID字段是varchar字段。您可能已经遇到过,传入nvarchar字段以针对varchar字段进行评估可能对sql性能非常不利。但是,SelectParameters.Add只接受TypeCode类型,这似乎只给我unicode TypeCode.String作为我的可行选项。

如何强制我的SqlDataSource使用varchars?我无法在此时更改数据类型 - 它是一个大型10年应用程序的主键,坦率地说,varchar适合应用程序。

3 个答案:

答案 0 :(得分:1)

顺便说一下,我的解决方法现在让SqlDataSource作为nvarchar传入param。我的SQL中的第一行然后将nvarchar param显式转换为varchar变量,并通过我的脚本使用该新的varchar变量。

但这看起来很傻。

答案 1 :(得分:0)

也许这会奏效:

using System.Data;

sdsResults.SelectParameters.Add("CodeID", SqlDbType.VarChar, strCodeID);

答案 2 :(得分:0)

不幸的是,它需要传入一个System.TypeCode参数。使用SqlDbType会导致编译错误。