关于VBScript和ASP Classic,我有几个问题:

  1. 在VBScript / ASP中访问MS SQL Server数据库的首选方法是什么?

  2. 关于从控制器分离视图和模型的最佳实践是什么?

  3. 关于VBScript或ASP我应该知道的其他事情吗?

如果您没有注意到,我是VBScript编码的新手。 我意识到数字2和3都是一个过于笼统的“黑洞”问题,所以不要以为我期望从这里学到关于这两个问题的所有知识。

===============>>#1 票数:20 已采纳

ADO是在VBScript /经典ASP中访问数据库的绝佳方法。

Dim db: Set db = Server.CreateObject("ADODB.Connection")
db.Open "yourconnectionstring -> see connectionstrings.com"
Dim rs: Set rs = db.Execute("SELECT firstName from Employees")
While Not rs.EOF
    Response.Write rs("firstName")
    rs.MoveNext
Wend
rs.Close

此处提供更多信息: http : //www.technowledgebase.com/2007/06/12/vbscript-how-to-create-an-ado-connection-and-run-a-query/

一个警告是,如果要在记录集中返回一个MEMO字段,请确保一次只选择一个MEMO字段,并确保它是查询中的LAST列。 否则,您将遇到问题。 (参考: http : //lists.evolt.org/archive/Week-of-Mon-20040329/157305.html

===============>>#2 票数:17

当我看到第一个答案时,我不得不离开电脑,但我仍然为它被很多人所认可而感到沮丧。 这是最糟糕的一种ASP代码的令人震惊的示例,这种代码可以确保您的网站可以通过SQL注入,并且,如果您继续在整个网站中使用此代码,则可以在一秒钟内被黑客入侵。

这不是您应该给ASP编码新手提供的那种代码,因为他们会认为这是用该语言编码的专业方式!

  1. 永远不要在代码中显示连接字符串,因为它包含数据库的用户名和密码。 请改用UDL文件,或者至少使用可以在其他地方声明并在站点中使用的常量。

  2. 在网络环境中对任何操作使用内联SQL不再有任何好的借口。 使用存储过程-无法充分强调安全性好处。 如果您确实无法做到这一点,那么将内联参数视为第二好的选择。内联SQL将使您的站点对SQL注入,恶意软件注入以及其他方面保持开放。

  3. 变量的后期声明可能导致草率的编码。 使用“显式选项”,并在函数顶部声明变量。 这是最佳做法,而不是真正的WTF,但是最好继续进行下去。

  4. 没有数据库暗示这是什么类型的连接-是只读的,还是用户将更新记录? 如果有效告知期望的内容,则可以优化连接,并且数据库可以非常有效地处理锁定。

  5. 使用后数据库连接不会关闭,并且记录集对象没有完全销毁。

尽管许多人建议改用.NET,但ASP仍然是一门强大的语言-通过良好的编码实践,可以编写易于维护,可伸缩和快速的ASP网站,但是您必须确保使用所有可用的方法来进行编程。您的代码效率高,您必须保持良好的编码习惯和一些周到的想法。 好的编辑器也会有所帮助,我更喜​​欢PrimalScript,与任何以.NET为中心的最新MS产品相比,PrimalScript对ASP编码器的帮助更大。

另外,“ MEMO”字段从哪里来? 这是Access术语,还是MySQL? 我问这样的字段在MS-SQL中被称为TEXT或NTEXT字段已有十年了。

===============>>#3 票数:8

记住程序到语言,而不是程序在里面。 仅仅因为您使用的工具集有限,并不意味着您必须像1999年那样编程。

我同意JasonS的课程。 的确,您不能做继承之类的事情,但您可以轻松地伪造它

Class Dog
    Private Parent

    Private Sub Class_Initialize()
        Set Parent = New Animal
    End Sub

    Public Function Walk()
        Walk = Parent.Walk
    End Function

    Public Function Bark()
        Response.Write("Woof! Woof!")
    End Function
End Class

在我的项目中,ASP页将具有以下内容:INC-APP-CommonIncludes.asp-这包括诸如通用库(数据库访问,文件功能等)之类的内容,并设置安全性,并包括所有配置文件(例如连接字符串,目录)位置等)和通用类(用户,权限等),并且包含在每个页面中。

Modules / ModuleName / page.vb.asp-类似于页面背后的代码。 包括页面特定的BO,BLL和DAL类,并设置页面所需的数据/接收提交的表单数据等

Modules / ModuleName / Display / INC-DIS-Page.asp-显示在page.vb.asp中设置的数据。

===============>>#4 票数:3

AX-Asp Xtreme Evolution是适用于ASP经典的MVC框架

有一些尝试为asp创建测试框架:aspUnit很好,但是不再维护。

我看到了几个月前如何制作自己的样品。 该示例使用nUnit对网站调用函数以进行自动测试。 我想我在这里拿到了(我的电话线很烂,所以我无法检查)

===============>>#5 票数:3

回应一些想法,并添加一些我自己的想法:

1)最好的访问数据库的方法是将其抽象为从VBScript访问的某种COM组件。

2)如果您确实想要,可以用VBScript编写控制器,然后在页面中访问它。 它会类似于页面控制器模式,而不是ASP.NET MVC或MonoRail中会看到的前端控制器

3)您为什么要对自己这样做? 进行这种工作所需的大多数工具都不再可用。

===============>>#6 票数:2

我同意@Cirieno的观点,出于他提到的所有原因,选择的答案在生产代码中使用是不明智的。 就是说,如果您只有一点经验,那么这个答案是基础知识的一个很好的起点。

根据我的ASP经验,我更喜欢使用VB编写数据库访问层,编译为DLL,然后通过VBScript引用DLL。 很难直接通过ASP进行调试,但这是一种将所有数据访问代码封装为远离ASP代码的好方法。

===============>>#7 票数:2

在数字2上,我认为您有一些选择...

1)您可以使用VB6等开发的COM组件将某些业务逻辑与UI分开。

2)您可以在VBScript中创建类。 没有继承的概念,实现中缺少其他更高级的功能,但是您可以将逻辑封装在有助于减少应用程序可扩展性的类中。 看看这个: http : //www.4guysfromrolla.com/webtech/092399-1.shtml

===============>>#8 票数:1

早在VBScript / ASP还可以的时候,我就在一家公用事业公司中使用了非常复杂的DB环境,我曾经向这个网站发誓: http//www.connectionstrings.com/

@michealpryor正确了

===============>>#9 票数:1

我一直被困在ASP之上,我感到您很痛苦。

1)对SQL Server进行查询的最佳方法是使用参数化查询; 这将有助于防止SQL注入攻击。

教程(不是我的博客):
http://www.nomadpete.com/2007/03/23/classic-asp-which-is-still-alive-and-parametised-queries/

2)我还没有看到有关专门针对ASP的MVC的任何信息,但是我对此很感兴趣,因为这对我来说很难。 我通常尝试至少在单独的函数中至少包含类似于视图的内容和类似于控制器的内容。 我想您可能可以在单独的文件中编写代码,然后使用服务器端包含将它们重新结合在一起。

3)您可能来自内置更多功能的语言。起初,似乎有些东西丢失了,但是通常只需要编写比以往更多的代码行即可。

===============>>#10 票数:1

另外,对于数据库访问,我有一组功能-GetSingleRecord,GetRecordset和UpdateDatabase,它们具有与Michael上面提到的功能相似的功能

  ask by Jason Baker translate from so

未解决问题?本站智能推荐: