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