我正在寻找编写存储过程的不同方法来返回数据的"页面".这是用于ASP ObjectDataSource,但它可以被认为是一个更普遍的问题.
要求是基于通常的寻呼参数返回数据的子集; startPageIndex并且maximumRows,还有一个sortBy允许对数据进行排序的参数.还传递了一些参数来过滤各种条件下的数据.
一种常见的方法似乎是这样的:
[方法1]
;WITH stuff AS (
SELECT
CASE
WHEN @SortBy = 'Name' THEN ROW_NUMBER() OVER (ORDER BY Name)
WHEN @SortBy = 'Name DESC' THEN ROW_NUMBER() OVER (ORDER BY Name DESC)
WHEN @SortBy = ...
ELSE ROW_NUMBER() OVER (ORDER BY whatever)
END AS Row,
.,
.,
.,
FROM Table1
INNER JOIN Table2 ...
LEFT JOIN Table3 ...
WHERE ... (lots of things to check)
)
SELECT *
FROM stuff
WHERE (Row …Run Code Online (Sandbox Code Playgroud) 我继承了经典的ASP应用程序。有很多事情需要整理,但我被迫逐渐做一些事情(我不能对每个脚本进行全面修改)。
系统中的某些位置带有硬编码的URL。必须先更改一些脚本,然后才能将其升级为实时Web根名称,以便将测试Web根名称更改为实时Web根名称。我正在寻找避免这种情况的方法(本质上是通过编程方式解决服务器问题)。
不难 简单检查Request(“ SERVER_NAME”)和以下内容:
appName = Request.ServerVariables("SCRIPT_NAME")
i = InStr(2, appName, "/") 'keep initial "/"
If i > 0 Then
appName = Left(appName, i)
End If
Run Code Online (Sandbox Code Playgroud)
这可以在“无处不在”脚本中完成。然后只需设置一个全局变量以容纳完整的“ http(s):// server / app /”或一个MakeUrlAbsolute()的函数,然后就可以使用了。
但是,这让我有点怀疑。这样是否可以更好地存储在应用程序级别?这建议在Global.asa中进行设置,例如:
Sub Application_OnStart()
Application("WebRoot") = ...
End Sub
Run Code Online (Sandbox Code Playgroud)
但是现在我无法获得SERVER_NAME的权限,因此我只能使用2个不同的Global.asa文件(每个环境一个)。
这是我唯一的选择吗?在Application_OnStart中的每个请求或硬代码上都可以解决吗?也许使用Session_OnStart是一个折衷方案。还是有一些巧妙的技巧来访问Application_OnStart中的信息?也许人们会采用硬编码,因为Global.asa不会经常更改。
当我对表的填充执行查询时,我只在两次出现时出错.特别是,当name字段有这样的值时:
K'Ogladbach
Run Code Online (Sandbox Code Playgroud)
现在撇号引起了一个问题,因为查询将此命令解释为新值,这是错误的.这是我在SQL中查询的结构:
string sql = @"insert into Team (name, code, shortName, squadMarketValue,
crestUrl, link_self, link_fixtures, link_players, caption)
values ('" + item.name + "', '" + item.code + "', '" +
item.shortName + "', '" + item.squadMarketValue + "', '" +
item.crestUrl + "', '" + item._links.self.href + "', '" +
item._links.fixtures.href + "', '" + item._links.players.href + "', '" +
campionato + "')";
Run Code Online (Sandbox Code Playgroud)
你如何才能看到每个新值都被提出来' value ',所以如果在值中有" ' "一个问题,因为查询失败了表填充.希望有一个解决方案.