问题描述
- javascript connection.execute 取不到 受查询影响的记录数目。
-
ADO Connection Execute(commandtext,ra,options) ra--可选。受查询影响的记录数目。 # vbscript--可以取到受查询影响的记录数目。 # javascript--不可以取到受查询影响的记录数目。 var ss = "Provider=MSDataShape.1;Data Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("\") + "\data\bm.dat;Persist Security Info=False;Jet OLEDB:Database Password=93" p_conn=Server.CreateObject("ADODB.Connection") p_conn.Open(ss) var ii=0 p_conn.execute("update form set name=name+1",ii,1) Response.Write("<br>"+ii+" " ) p_conn.close
ii总是初始值
上段程序改成vbscript,可以取到 受查询影响的记录数目
什么原因?请高手释疑!!
解决方案
<%@Language=JScript%>
<%
//
// ..
this.query = "..."; // required
this.rowCount = 0; // required
ExecCommand(this);
//..
this.db.Close();
//..
%>
Sub ExecCommand(obj)
Dim intAffectedRows
obj.db.Execute obj.query, intAffectedRows
obj.rowCount = intAffectedRows 'assign rowCount
End Sub
解决方案二:
javascript 调用常见数据类型是传值的,对象或字符串是传地址。
调用函数时,直接复制了当前的堆栈,解决内存泄漏。
解决方案三:
http://stackoverflow.com/questions/9356012/get-affected-count-of-rows-from-adodb-asp-with-jscript
因为是值引用。。
解决方案四:
谢谢!!!!But this code don't work, rowCount are set to its initial value(0). I think it because primitive type in javascript is always called by value.
基本类型是传值,其它类型传地址!
解决方案五:
谢谢!!!!But this code don't work, rowCount are set to its initial value(0). I think it because primitive type in javascript is always called by value.
基本类型是传值,其它类型传地址!
解决方案六:
<%@Language=JScript%>
<%
//
// ..
this.query = "..."; // required
this.rowCount = 0; // required
ExecCommand(this);
//..
this.db.Close();
//..
%>
Sub ExecCommand(obj)
Dim intAffectedRows
obj.db.Execute obj.query, intAffectedRows
obj.rowCount = intAffectedRows 'assign rowCount
End Sub