我有几个关于VBScript和ASP Classic的问题:
在VBScript/ASP中访问MS SQL Server数据库的首选方法是什么?
关于从控制器中分离模型的最佳实践是什么?
关于VBScript或ASP,我应该知道的任何其他事情?
如果您没有注意到,我是VBScript编码的新手.我意识到数字2和3是一种过于笼统的巨型"黑洞"问题,所以不要以为我希望从这里学到关于这两个问题的所有知识.
ADO是在VBScript/Classic 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字段,并确保它是查询中的最后一列.否则你会遇到问题.(参考:http://lists.evolt.org/archive/Week-of-Mon-20040329/157305.html)
当我看到第一个答案时,我不得不离开我的电脑,并且仍然感到很难受到这么多人的批准.这是最糟糕的ASP代码的一个令人震惊的例子,它确保您的网站是可注入SQL的,并且,如果您继续在整个网站上使用此代码,则可以在其生命的一英寸内进行破解.
这不是你应该给ASP编码新手的那种代码,因为他们会认为这是用这种语言编写代码的专业方式!
切勿在代码中显示连接字符串,因为它包含数据库的用户名和密码.使用UDL文件,或者至少是一个可以在其他地方声明并在整个站点中使用的常量.
对于Web环境中的任何操作,使用内联SQL不再有任何好的借口.使用存储过程 - 不能强调安全性好处.如果你真的不能这样做,那么将内联参数看作第二个最佳选项...内联SQL将使您的站点对SQL注入,恶意软件注入和其他内容保持开放.
迟到的变量声明可能导致编码草率.使用"option explicit"并在函数顶部声明变量.这是最佳实践,而不是真正的WTF,但最好从你的意思开始.
没有提示数据库这是什么类型的连接 - 是仅用于读取,还是用户将更新记录?可以优化连接,并且如果有效地告知了预期的结果,数据库可以非常有效地处理锁定.
使用后数据库连接未关闭,并且记录集对象未完全销毁.
ASP仍然是一个强大的语言,尽管很多人建议迁移到.NET - 具有良好的编码习惯的ASP网站可以写,易于维护,可扩展性和快速的,但你必须确保你使用所有可用的方法,使你的代码有效,你必须保持良好的编码实践和一点预见.一个好的编辑器也会有所帮助,我更喜欢PrimalScript,我觉得它比ASP编码器对任何看起来非常以.NET为中心的最新MS产品更有帮助.
另外,"MEMO"字段在哪里?这是Access的命名法,还是MySQL?我问这些字段在MS-SQL中被称为TEXT或NTEXT字段已有十年了.
记住编程语言而不是编程.仅仅因为你使用有限的工具集并不意味着你必须像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中设置的数据.