jscript ado && adox 应用的几个技巧 by shawl.qiu

78 篇文章 0 订阅
36 篇文章 0 订阅

jscript ado && adox 应用的几个技巧 by shawl.qiu

 说明:
 本文介绍了几个 asp/jscript 使用 ado 操作数据库表的实用技巧.
 
 主要为:
 GetRows()
 GetString()
 Save()
 Open()
 
 及 adox 操作数据库的实用技巧, 为
 建,删,改 视图.
 建库
 建表+栏
 
 目录:
 1. Recordset GetRows() 用法
 1.1 使用 toArray() 取简单的一维数组返回数据
 1.2 使用 VBArray() 的各个方法取详细的返回数据
 
 2. Recordset GetString() 用法
 3. Recordset Save() 用法
 4. Recordset Open() 用法
 
 5. Adox 建,删,改 视图.
 5.1 使用 Adox 创建视图, 并读取视图数据
 5.2 使用 Adox 更改刚创建的视图
 5.3 使用 Adox 删除视图

 6. Adox 建库
 7. Adox 建表+栏
 
 shawl.qiu
 2007-01-03
 http://blog.csdn.net/btbtd 

 内容:
 1. Recordset GetRows() 用法
  GetRows() 主要为改进操作效率, 摆脱低效率的 MoveNext() 方法...
  GetRows 返回数据为一个两维数组, 但 Jscript 数组本身只是一维数组, 我们需要使用 Jscript 的 VBArray 函数获得该两维数组的数据.
 
 1.1 使用 toArray() 取简单的一维数组返回数据
  1. <%
  2.  var conn='provider=microsoft.jet.oledb.4.0;persist security info=false; data source='+
  3.  Server.MapPath("data/data.mdb");
  4.    var oRs=new ActiveXObject('adodb.recordset');
  5.   oRs.Open('select * from ctglossarysupercat', conn, 1);
  6.     fDataGetRows(oRs, true);
  7.     oRs.Close();
  8.   oRs=null;
  9.  function fDataGetRows(oRs, bShow, bReturn, sCst){
  10.   if(!sCst){
  11.    var oAr=new VBArray(oRs.GetRows());
  12.   } else {
  13.    var oAr=new VBArray(eval('oRs.GetRows('+sCst+')'));
  14.   }
  15.   var ar=oAr.toArray();
  16.   if(bShow)Response.write(ar.join('<br/>'));
  17.   if(!bReturn)return ar;else return oAr;
  18.  } // shawl.qiu code
  19. %>
1.2 使用 VBArray() 的各个方法取详细的返回数据
  1. <%
  2.  var conn='provider=microsoft.jet.oledb.4.0;persist security info=false; data source='+
  3.  Server.MapPath("data/data.mdb");
  4.    var oRs=new ActiveXObject('adodb.recordset');
  5.   oRs.Open('select * from ctglossarysupercat', conn, 1);
  6.     fDataGetRows1(oRs, true);
  7.     oRs.Close();
  8.   oRs=null;
  9.   function fDataGetRows1(oRs, bShow, bReturn, sCst){
  10.     if(!sCst){
  11.      var oAr=new VBArray(oRs.GetRows());
  12.     } else {
  13.      var oAr=new VBArray(eval('oRs.GetRows('+sCst+')'));
  14.     }
  15.     var ar=oAr.toArray();
  16.     var ar_=[];
  17.     var ar__=[];
  18.     var nLen=ar.length/(oAr.ubound()+1)
  19.         if(bShow){
  20.      for(var iLen=0; iLen<nLen; iLen++){
  21.       for(var i=0, j=oAr.ubound(); i<=j; i++){
  22.        Response.write(oAr.getItem(i,iLen));
  23.       }
  24.       Response.write('<br/>');
  25.      }
  26.     } else {
  27.      for(var iLen=0; iLen<nLen; iLen++){
  28.        ar_[iLen]=new Array();
  29.       for(var i=0, j=oAr.ubound(); i<=j; i++){
  30.        ar_[iLen][i]=oAr.getItem(i,iLen);
  31.       }
  32.      }
  33.     }
  34.     if(!bReturn)return ar_;else return oAr;
  35.    } // shawl.qiu code
  36. %>
 2. Recordset GetString() 用法
 返回最原始的字符数据, 效率NN高, 可自定列定界符, 行分割符.
 鄙人比较偏爱 GetString() 方法, 主要为 鄙人的正则水平操作这些原始数据 较为得心应手.
  1. <%
  2.  var conn='provider=microsoft.jet.oledb.4.0;persist security info=false; data source='+
  3.  Server.MapPath("data/data.mdb");
  4.    var oRs=new ActiveXObject('adodb.recordset');
  5.   oRs.Open('select * from ctglossarysupercat', conn, 1);
  6.     fDataGetString(oRs, true);
  7.     oRs.Close();
  8.   oRs=null;
  9.   function fDataGetString(oRs, bShow, bReturn, sCst){
  10.      if(!sCst){
  11.       var str=oRs.GetString(2,-1, '#', '@<br/>/n', 'empty...');
  12.      } else {
  13.       var str=eval('oRs.GetString('+sCst+')')
  14.      }
  15.      if(bShow)Response.write(str);
  16.      if(!bReturn)return str;
  17.   } // shawl.qiu code
  18. %>
 3. Recordset Save() 用法
 Save 方法主要为保存记录为文件, 可以为 高级视图/XML 文件.
 这个方法很酷, 可以改进N大的效率, 问题是你要懂得应用. 
 现在咱们把当前记录存储为 XML 文件, 等一下使用 Open 方法打开该文件.
  1. <%
  2.  var conn='provider=microsoft.jet.oledb.4.0;persist security info=false; data source='+
  3.  Server.MapPath("data/data.mdb");
  4.    var oRs=new ActiveXObject('adodb.recordset');
  5.   oRs.Open('select top 1 * from ctglossarysupercat', conn, 1);
  6.     fSelectSave('ixml.xml', true, oRs);
  7.     oRs.Close();
  8.   oRs=null;
  9.   function fSelectSave(sPath, bOvWt, oRs, nParam){
  10.    if(!sPath) return false;
  11.    sPath=Server.MapPath(sPath);
  12.    if(!oRs) oRs=tl.select();
  13.    if(!nParam) nParam=1;
  14.    if(bOvWt){
  15.     if(fFlCkFl(sPath)) fFsoDelFile(sPath);
  16.     oRs.Save(sPath, nParam);
  17.    } else {
  18.     try{
  19.      oRs.Save(sPath, nParam);
  20.     } catch(e){
  21.      Response.write('could not save the file by the path: '+sPath+'.<br/>');
  22.      Response.write(e.number+' '+e.description);
  23.     } // end try
  24.    } // end if
  25.   } // end function fSelectSave(sPath, bOvWt, oRs, nParam) // shawl.qiu code
  26.     function fFlCkFl(sPath){
  27.    if(!sPath) return false;
  28.    if(sPath.length==0)return false;
  29.    return new ActiveXObject("scripting.fileSystemObject").FileExists(sPath);
  30.   } // end function fFlCkFl(sPath)  // shawl.qiu code
  31.     function fFsoDelFile(sPath){
  32.    if(!sPath)return false;
  33.    if(sPath=='')return false;
  34.    return new ActiveXObject("scripting.fileSystemObject").DeleteFile(sPath)
  35.   } // end function fFsoDelFile(sPath)  // shawl.qiu code
  36. %>
 4. Recordset Open() 用法
 现在使用 Open() 打开刚保存的 XML 文件.
  1. <%
  2.  var conn='provider=microsoft.jet.oledb.4.0;persist security info=false; data source='+
  3.  Server.MapPath("data/data.mdb");
  4.    var oRs=new ActiveXObject('adodb.recordset');
  5.   iPath=Server.MapPath('ixml.xml');
  6.   oRs.Open(iPath);
  7.     fDataListAll(oRs)
  8.     oRs=null;
  9.    function fDataListAll(oRs){
  10.    if(!oRs) var rs=tl.select()else rs=oRs;
  11.    if(rs.Eof||rs.Bof)return false;
  12.    Response.Write('<br/>');
  13.    while(!rs.Eof||rs.Bof){
  14.     for(var i=0, j=rs.Fields.count; i<j; i++){
  15.      Response.Write('<div class="'+(fMod(i+1,2)?'corDc':'corLc')+'">');
  16.      Response.Write((rs.Fields(i).name.bold()).anchor(rs.Fields(i).name)+': ');
  17.      Response.Write(rs(rs.Fields(i).name)+' ');
  18.      Response.Write('</div>');
  19.     }
  20.     Response.Write('<hr/>');
  21.     rs.MoveNext;
  22.    }
  23.     rs.Close();
  24.     rs=null;
  25.   } // shawl.qiu code
  26.     function fMod(num,step){
  27.    if(!num)return false;
  28.    if(!step)var step=2;
  29.    (num%step)?num=true:num=false;
  30.    return num;
  31.   }
  32. %>
 5. Adox 建,删,改 视图.
 5.1 使用 Adox 创建视图, 并读取视图数据
  1. <%
  2.  var conn='provider=microsoft.jet.oledb.4.0;persist security info=false; data source='+
  3.  Server.MapPath("data/data.mdb");
  4.    fAdoxCreateView(conn,'select * from ctglossarysupercat', 'iview');
  5.   var oRs=new ActiveXObject('adodb.recordset');
  6.    oRs.Open('select * from iview', conn, 1);
  7.     fDataListAll(oRs)
  8.     oRs=null;
  9.    function fDataListAll(oRs){
  10.    if(!oRs) var rs=tl.select()else rs=oRs;
  11.    if(rs.Eof||rs.Bof)return false;
  12.    Response.Write('<br/>');
  13.    while(!rs.Eof||rs.Bof){
  14.     for(var i=0, j=rs.Fields.count; i<j; i++){
  15.      Response.Write('<div class="'+(fMod(i+1,2)?'corDc':'corLc')+'">');
  16.      Response.Write((rs.Fields(i).name.bold()).anchor(rs.Fields(i).name)+': ');
  17.      Response.Write(rs(rs.Fields(i).name)+' ');
  18.      Response.Write('</div>');
  19.     }
  20.     Response.Write('<hr/>');
  21.     rs.MoveNext;
  22.    }
  23.     rs.Close();
  24.     rs=null;
  25.   } // shawl.qiu code
  26.     function fMod(num,step){
  27.    if(!num)return false;
  28.    if(!step)var step=2;
  29.    (num%step)?num=true:num=false;
  30.    return num;
  31.   }
  32.     function fAdoxCreateView(sConn,sSql, sName){
  33.    var oCmd=new ActiveXObject('adodb.command');
  34.    var oAdox=new ActiveXObject('adox.catalog');
  35.     oAdox.ActiveConnection=sConn;
  36.     oCmd.CommandText=sSql;
  37.     oAdox.Views.Append(sName, oCmd)
  38.     oAdox=null;
  39.     oCmd=null;
  40.   } // end function fAdoxCreateView(sConn,sSql, sName) // shawl.qiu code
  41. %>
 5.2 使用 Adox 更改刚创建的视图
  1. <%
  2.  var conn='provider=microsoft.jet.oledb.4.0;persist security info=false; data source='+
  3.  Server.MapPath("data/data.mdb");
  4.    fAdoxUpdateView(conn, 'select * from ctglossarysubcat', 'iview');
  5.   var oRs=new ActiveXObject('adodb.recordset');
  6.    oRs.Open('select * from iview', conn, 1);
  7.     fDataListAll(oRs)
  8.     oRs=null;
  9.    function fDataListAll(oRs){
  10.    if(!oRs) var rs=tl.select()else rs=oRs;
  11.    if(rs.Eof||rs.Bof)return false;
  12.    Response.Write('<br/>');
  13.    while(!rs.Eof||rs.Bof){
  14.     for(var i=0, j=rs.Fields.count; i<j; i++){
  15.      Response.Write('<div class="'+(fMod(i+1,2)?'corDc':'corLc')+'">');
  16.      Response.Write((rs.Fields(i).name.bold()).anchor(rs.Fields(i).name)+': ');
  17.      Response.Write(rs(rs.Fields(i).name)+' ');
  18.      Response.Write('</div>');
  19.     }
  20.     Response.Write('<hr/>');
  21.     rs.MoveNext;
  22.    }
  23.     rs.Close();
  24.     rs=null;
  25.   } // shawl.qiu code
  26.     function fMod(num,step){
  27.    if(!num)return false;
  28.    if(!step)var step=2;
  29.    (num%step)?num=true:num=false;
  30.    return num;
  31.   }
  32.     function fAdoxUpdateView(sConn, sSql, sName){
  33.    var oConn=new ActiveXObject('adodb.connection');
  34.    var oCat=new ActiveXObject('adox.catalog');
  35.    var oCmd=new ActiveXObject('adodb.command');
  36.     oConn.Open(sConn);
  37.     oCat.ActiveConnection=oConn;
  38.     oCmd=oCat.Views(sName).Command;
  39.     oCmd.CommandText=sSql;
  40.     oCat.Views(sName).Command=oCmd;
  41.     oCmd=null;
  42.     oCat=null;
  43.     oConn.Close();
  44.     oConn=null;
  45.   } // end function fAdoxUpdateView(sConn, sSql, sName) // shawl.qiu code
  46. %>
 5.3 使用 Adox 删除视图
  1. <%
  2.  var conn='provider=microsoft.jet.oledb.4.0;persist security info=false; data source='+
  3.  Server.MapPath("data/data.mdb");
  4.    fAdoxDeleteView(conn, 'iview');
  5.    function fAdoxDeleteView(sConn, sName){
  6.   var oAdox=new ActiveXObject('adox.catalog');
  7.    oAdox.ActiveConnection=sConn;
  8.    oAdox.Views.Delete(sName)
  9.    oAdox=null;
  10.  } // end function fAdoxDeleteView(sConn, sName) // shawl.qiu code
  11. %>
 6. Adox 建库
  1. <%
  2.  fAdoxCreateDb('idb.mdb');
  3.  function fAdoxCreateDb(sDbPath){
  4.   sDbPath=Server.MapPath(sDbPath);
  5.   var sConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
  6.   var oCat=new ActiveXObject('adox.catalog');
  7.    oCat.Create(sConn+sDbPath);
  8.    oCat=null;
  9.  } // end function fAdoxCreateDb(sDbPath) // shawl.qiu code
  10. %>
 7. Adox 建表+栏
  1. <%
  2.  var conn='provider=microsoft.jet.oledb.4.0;persist security info=false; data source='+
  3.  Server.MapPath("data/data.mdb");
  4.   var oCat=new ActiveXObject('adox.catalog');
  5.  var oTbl=new ActiveXObject('adox.table');
  6.   oCat.ActiveConnection=conn;
  7.    with(oTbl){
  8.   Name='iTable'; // table name
  9.   ParentCatalog=oCat;
  10.   Columns.Append('col1', 3); // integer
  11.   Columns.Append('col2', 7); // date
  12.   Columns.Append('col3', 205); // long binary
  13.   Columns.Append('col4', 203); // memo
  14.   Columns.Append('col5', 202); // text
  15.   Columns.Append('col6', 130); // text
  16.   Columns.Append('col7', 11); // boolean
  17.   Columns.Append('col8', 6); // currency
  18.   Columns.Append('col9', 72); // guid
  19.     /* 创建自动编号 */
  20.   Columns.Append('col10', 3); // integer
  21.   Columns('col10').Properties('AutoIncrement')=true;
  22.  }
  23.   oCat.Tables.Append(oTbl);
  24.  oTbl=null;
  25.  oCat=null;
  26. %>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值