프로그래밍/ASP
ASP - GetRows() 함수로 Recordset (레코드셋) 데이터 가져와서 출력하기
재우니
2017. 4. 30. 19:04
ASP - GetRows() 함수로 Recordset (레코드셋) 데이터 가져와서 출력하기
Classic ASP/VBScript - Getting away from Recordsets, use GetRows()
GetRows () 의 2 차원 배열을 사용하는 것이 왜 훨씬 좋은지 자세히 설명하지는 않겠지만, GetRows ()를 사용하는 것이 훨씬 효율적이라는 것입니다.
아래는 전형적인 레코드셋을 이용하여 가져오는 방법 입니다.
strSQL = "SELECT ID, Name FROM users;" Set RS = Server.CreateObject("ADODB.Recordset") RS.Open strSQL, Conn ' 1 call to database If Not RS.EOF Then ' 1 call to database While Not RS.EOF ' n + 1 calls to database ID = RS("ID") ' n calls to database Name = RS("Name") ' n calls to database Response.Write("<p>" & Name & " (" & ID & ")</p>" & vbCrLf) RS.MoveNext() ' n calls to database Wend End If RS.Close() Set RS = Nothing
아래 코드는 위와 동일한 결과값을 주긴 하지만, 더 빠르고, 효율적인 속도를 제공해 줍니다.
strSQL = "SELECT ID, Name FROM users;" Set objRS = Conn.Execute(strSQL) ' 1 call here If Not objRS.EOF Then arrRS = objRS.GetRows() ' 2 calls here Set objRS = Nothing If IsArray(arrRS) Then For i = LBound(arrRS, 2) To UBound(arrRS, 2) ID = arrRS(0, i) Name = arrRS(1, i) Response.Write("<p>" & Name & " (" & ID & ")</p>" & vbCrLf) Next Erase arrRS End If
위의 코드를 더 짧게하기 위해, 아래 코드는 재활용을 하기 위해서 function 함수를 사용했습니다.
Function GetRSArray(strSQL) Set objRS = Conn.Execute(strSQL) If Not objRS.EOF Then arrRS = objRS.GetRows() Set objRS = Nothing GetRSArray = arrRS End Function arrRS = GetRSArray("SELECT ID, Name FROM users;") If IsArray(arrRS) Then For i = LBound(arrRS, 2) To UBound(arrRS, 2) ID = arrRS(0, i) Name = arrRS(1, i) Response.Write("<p>" & Name & " (" & ID & ")</p>" & vbCrLf) Next Erase arrRS End If