在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
GetRows 方法 将 Recordset 对象的多个记录复制到数组中。
返回值 常量 说明 Fields 可选,变体型,代表单个字段名、顺序位置、字段名数组或顺序位置号。ADO 仅返回这些字段中的数据。 GetString方法 查询数据库显示表格时,我们常用Do While()...Loop 或者是For...Next循环来显示表格,这样当我们要查询大量数据时,势必会比较慢。这时,我们就可以用记录集对象提供的GetString()方法(ADO必须升级到2.0)。
参数说明: <TABLE Border=1> <TR><TD> <% = Response.Write rs.GetString( , , "</TD><TD>", "</TD></TR><TR>", ) %> </TABLE> 这样写的HTML结果如下: <TABLE Border=1> <TR> <TD>row1, field1 value</TD> <TD>row1, field2 value</TD> </TR> <TR> <TD>row2, field1 value</TD> <TD>row2, field2 value</TD> </TR> </TABLE> 这里有个BUG了,再看看生成下拉选单: <% Set RS = conn.Execute("Select theValue,theText FROM selectOptionsTable orDER BY theText") optSuffix = "</OPTION>" & vbNewLine valPrefix = "<OPTION Value='" valSuffix = "'>" opts = RS.GetString( , , valSuffix, optSuffix & valPrefix, "--error--" ) ' Next line is the key to it! opts = Left( opts, Len(opts)-Len(valPrefix) ) Response.Write "<Select ...>" & vbNewLine Response.Write valPrefix & opts Response.Write "</Select>" %> 如果想建立一个正确的表格的话,解决那个BUG,只要这样做就可以了: <% Set RS = conn.Execute("Select * FROM table") tdSuffix = "</TD>" & vbNewLine & "<TD> trPrefix = "<TR>" & vbNewLine & "<TD>" trSuffix = "</TD>" & vbNewLine & "</TR>" & vbNewLine & "<TR>" & vbNewLine opts = RS.GetString( , , tdSuffix, trSuffix & trPrefix, "--error--" ) ' Next line is the key to it! opts = Left( opts, Len(opts)-Len(trPrefix) ) Response.Write "<TABLE Border=1 CellPadding=5>" & vbNewLine Response.Write trPrefix & opts Response.Write "</TABLE>" & vbNewLine %> 再介绍一个完全不同的办法: <% SQL = "Select '<OPTION Value=''',value,'''>',text,'</OPTION>' FROM table orDER BY text" Set RS = conn.Execute(SQL) Response.Write "<Select>" & vbNewLine & RS.GetString(,,"",vbNewLine) & "</Select>" %> 你用过吗。。。 <% SQL = "Select '<OPTION Value=''' & value & '''>' & text & '</OPTION>' FROM table orDER BY text" Set RS = conn.Execute(SQL) Response.Write "<Select>" & vbNewLine & RS.GetString(,,"",vbNewLine) & "</Select>" %> 下面是一份完整的示例: Script Output: ASP完整代码如下: <% ' Selected constants from adovbs.inc: Const adClipString = 2 ' Declare our variables... always good practice! Dim cnnGetString ' ADO connection Dim rstGetString ' ADO recordset Dim strDBPath ' Path to our Access DB (*.mdb) file Dim strDBData ' String that we dump all the data into Dim strDBDataTable ' String that we dump all the data into ' only this time we build a table ' MapPath to our mdb file's physical path. strDBPath = Server.MapPath("db_scratch.mdb") ' Create a Connection using OLE DB Set cnnGetString = Server.CreateObject("ADODB.Connection") ' This line is for the Access sample database: 'cnnGetString.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath & ";" ' We're actually using SQL Server so we use this line instead. ' Comment this line out and uncomment the Access one above to ' play with the script on your own server. cnnGetString.Open "Provider=SQLOLEDB;Data Source=10.2.1.214;" _ & "Initial Catalog=samples;User Id=samples;Password=password;" _ & "Connect Timeout=15;Network Library=dbmssocn;" ' Execute a simple query using the connection object. ' Store the resulting recordset in our variable. Set rstGetString = cnnGetString.Execute("Select * FROM scratch") ' Now this is where it gets interesting... Normally we'd do ' a loop of some sort until we ran into the last record in ' in the recordset. This time we're going to get all the data ' in one fell swoop and dump it into a string so we can ' disconnect from the DB as quickly as possible. strDBData = rstGetString.GetString() ' Since I'm doing this twice for illustration... I reposition ' at the beginning of the RS before the second call. rstGetString.MoveFirst ' This time I ask for everything back in HTML table format: strDBDataTable = rstGetString.GetString(adClipString, -1, _ &"</td><td>", "</td></tr>" & vbCrLf & "<tr><td>", " ") ' Because of my insatiable desire for neat HTML, I actually ' truncate the string next. You see, GetString only has ' a parameter for what goes between rows and not a seperate ' one for what to place after the last row. Because of the ' way HTML tables are built, this leaves us with an extra ' <tr><td> after the last record. GetString places the ' whole delimiter at the end since it doesn't have anything ' else to place there and in many situations this works fine. ' With HTML it's a little bit weird. Most developers simply ' close the row and move on, but I couldn't bring myself to' leave the extra row... especially since it would have a ' different number of cells then all the others. ' What can I say... these things tend to bother me. ;) strDBDataTable = Left(strDBDataTable, Len(strDBDataTable) - Len("<tr><td>")) ' Some notes about .GetString: ' The Method actually takes up to 5 optional arguments: ' 1. StringFormat - The format in which to return the ' recordset text. adClipString is the only ' valid value. ' 2. NumRows - The number of rows to return. Defaults ' to -1 indicating all rows. ' 3. ColumnDelimiter - The text to place in between the columns. ' Defaults to a tab character ' 4. RowDelimiter - The text to place in between the rows ' Defaults to a carriage return ' 5. NullExpr - Expression to use if a NULL value is ' returned. Defaults to an empty string. ' Close our recordset and connection and dispose of the objects. ' Notice that I'm able to do this before we even worry about ' displaying any of the data! rstGetString.Close Set rstGetString = Nothing cnnGetString.Close Set cnnGetString = Nothing ' Display the table of the data. I really don't need to do ' any formatting since the GetString call did most everything ' for us in terms of building the table text. Response.Write "<table border=""1"">" & vbCrLf Response.Write "<tr><td>" Response.Write strDBDataTable Response.Write "</table>" & vbCrLf ' FYI: Here's the output format you get if you cann GetString ' without any parameters: Response.Write vbCrLf & "<p>Here's the unformatted version:</p>" & vbCrLf Response.Write "<pre>" & vbCrLf Response.Write strDBDataResponse.Write "</pre>" & vbCrLf ' That's all folks! %> 下面给大家补充一下 ASP里使用GetString来循环读取数据的具体方法及实例 在ASP里,我们要循环读取数据时,我们通常用的是 while ... wend 或者 do while() .. loop,但这种方法非常的没有效率,并且会影响网页程序打开的速度。 当我们只是从数据库里读取并显示数据的时候,我们可以用GetString来加速读取数据,并显示到网页上,使用GetString会大大增加我们从数据库读取数据的效率。 本文站长就和大家来说说ASP里使用GetString的方法,先来看GetString的具体语法结构:
下面站长给大家提供一个完整的实例: <% set conn = server.CreateObject("adodb.connection") conn.open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("study.mdb") set rs = server.createobject("adodb.recordset") sql = "sel ect * from users" rs.open sql,conn,1,1 str=rs.GetString(,,"</td><td>","</td></tr><tr><td>","该字段为空!") Response.Write("<table border=1><tr><td>"&str&"</td></tr></table>") %> 以上就是asp中记录集对象的getrows和getstring用法分析的详细内容,更多关于记录集 getrows getstring的资料请关注极客世界其它相关文章! |
请发表评论