Asp classic 需要ASP对象

Asp classic 需要ASP对象,asp-classic,Asp Classic,我在Classic ASP中遇到错误: Microsoft VBScript runtime error '800a01a8' Object required: 'SqlStatement' /Data/Database.asp, line 186 第186行是:SqlStatement.CommandText=sql 这是我的密码: dimdb,SqlStatement,RS Set Db=Nothing Set SqlStatement=Nothing 设置RS=无 '初始化数据库一次

我在Classic ASP中遇到错误:

Microsoft VBScript runtime error '800a01a8'
Object required: 'SqlStatement'
/Data/Database.asp, line 186 
第186行是:
SqlStatement.CommandText=sql

这是我的密码:

dimdb,SqlStatement,RS
Set Db=Nothing
Set SqlStatement=Nothing
设置RS=无
'初始化数据库一次
私有子SqlInitDb()
如果isNull(Db)或varType(Db)=vbEmpty或IsObject(Db)=False,则
'创建数据库连接对象
Set Db=Server.CreateObject(“ADODB.Connection”)
'设置连接超时
Db.ConnectionTimeout=会话(“ConnectionTimeout”)
'设置命令超时
Db.CommandTimeout=会话(“CommandTimeout”)
"开放数据库",
Db.打开会话(“连接字符串”)
如果结束
如果isNull(SqlStatement)或varType(SqlStatement)=vbEmpty或IsObject(SqlStatement)=False,则
'创建sql语句
Set SqlStatement=Server.CreateObject(“ADODB.Command”)
'将打开的数据库设置为SQL语句的活动连接
SqlStatement.ActiveConnection=Db
如果结束
端接头
'如果数据库未关闭,请将其关闭
私有子SqlClose()
如果不是isNull(SqlStatement)和varType(SqlStatement)vbEmpty和IsObject(SqlStatement)=True,则
SqlStatement.ActiveConnection.Close
如果结束
Set SqlStatement=Nothing
如果不是isNull(Db)和varType(Db)vbEmpty和IsObject(Db)=True,则
对于每个对象,以Db为单位。错误
响应。写入(“”)
响应。写入(“说明:”)
响应。写入(objErr.Description&“
”) write(“帮助上下文:”) response.write(objErr.HelpContext&“
”) write(“帮助文件:”) response.write(objErr.HelpFile&“
”) write(“本机错误:”) 响应。写入(objErr.NativeError&“
”) write(“错误号:”) 响应。写入(objErr.Number&“
”) write(“错误源:”) response.write(objErr.Source&“
”) write(“SQL状态:”) write(objErr.SQLState&“
”) 回答。写(“

”) 下一个 Db.Close() Set Db=Nothing 如果结束 端接头 '将用户插入数据库 公共函数插入器(ByVal userObj) 如果isNull(userObject)或varType(userObject)=vbEmpty,则 插入器=-1 退出功能 如果结束 调用SqlInitDb() Set RS=Server.CreateObject(“ADODB.Recordset”) dimsql sql=“在用户(名字,姓氏)中插入值('”&userObj.getFirstname()&“,'&userObj.getlasname()&“)” SqlStatement.CommandText=sql SqlStatement.CommandType=1 '运行insert语句 SqlStatement.Execute InsertUser=错误编号 调用SqlClose() 端函数
SqlStatement显然是一个对象,所以我不理解


感谢

VBScript提供了许多将变量定义为空、null、nothing等的方法

你遇到的问题是,没有东西是物体。它不是空的,它不是空的,它是完全有效的对象,只是碰巧是一种特殊的对象

因此,您的条件总是失败,即使变量为Nothing,也返回False

要解决此问题,请使用VBScript中唯一正确的方法检查该特殊值:

如果SqlStatement为Nothing,则
'创建sql语句
Set SqlStatement=Server.CreateObject(“ADODB.Command”)
'将打开的数据库设置为SQL语句的活动连接
SqlStatement.ActiveConnection=Db
如果结束

唯一的缺点是,您现在必须确保将变量初始化为Nothing,否则它将抛出错误。

VBScript有许多方法将变量定义为空、空、Nothing等

你遇到的问题是,没有东西是物体。它不是空的,它不是空的,它是完全有效的对象,只是碰巧是一种特殊的对象

因此,您的条件总是失败,即使变量为Nothing,也返回False

要解决此问题,请使用VBScript中唯一正确的方法检查该特殊值:

如果SqlStatement为Nothing,则
'创建sql语句
Set SqlStatement=Server.CreateObject(“ADODB.Command”)
'将打开的数据库设置为SQL语句的活动连接
SqlStatement.ActiveConnection=Db
如果结束

唯一的缺点是,现在必须确保将变量初始化为Nothing,否则它将抛出错误。

No,这是经典的ASP。是什么让你认为它是ASP.NET?试着在init方法中检查
Nothing
:如果isNull(SqlStatement)或(varType(SqlStatement)=vbEmpty)或(IsObject(SqlStatement)=False)或(SqlStatement是Nothing),那么
否这是经典的ASP。是什么让你认为它是ASP.NET?试着在init方法中检查
Nothing
:如果isNull(SqlStatement)或(varType(SqlStatement)=vbEmpty)或(IsObject(SqlStatement)=False)或(SqlStatement为Nothing),那么