asfman
android developer
posts - 90,  comments - 213,  trackbacks - 0
说明:
 本文介绍了几个 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. %>
posted on 2007-11-04 23:25 汪杰 阅读(560) 评论(0)  编辑 收藏 引用 所属分类: asp(javascrpt)
只有注册用户登录后才能发表评论。

<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(15)

随笔分类(1)

随笔档案(90)

文章分类(727)

文章档案(712)

相册

收藏夹

http://blog.csdn.net/prodigynonsense

友情链接

最新随笔

搜索

  •  

积分与排名

  • 积分 - 468991
  • 排名 - 6

最新随笔

最新评论

阅读排行榜

评论排行榜