У меня есть logTable в моей базе данных для изменений в журнале someTable.
logTable имеет три столбца:
первый для имени столбца хранилища, значение которого было изменено;
второй для старого значения;
третий для нового значения.
Второйтретий столбец имеет тип данных sql_variant.
В моей программе я получаю данные из этой таблицы, а oldValue и newValue представляют собой массивы байтов.
Например:
строк в logTable:
columnName(nvarchar(50)) oldValue(sql_variant) newValue(sql_variant)
compName name1 name2
address "address1" "address2"
zip 123 134
phone 123456789 987654321
Но я получаю значения oldValue и newValue в байтовых массивах.
Как:
address "byte array" "byte array"
zip "byte array" "byte array"
phone "byte array" "byte array"
вместо:
address "address1" "address2"
zip 123 134
phone 123456789 987654321
Этот код, который я использую для получения данных из БД:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open connStr
Set rsData = Server.CreateObject("ADODB.Recordset")
Set objComm = Server.CreateObject("ADODB.Command")
Set objComm.ActiveConnection= Conn
objComm.CommandText="usp_Log_GetOperationDetails"
objComm.CommandType = adCmdStoredProc
objComm.Parameters.Append objComm.CreateParameter("@CompanyId",adInteger,adParamInput)
objComm.Parameters("@CompanyId")=Request("CompanyId")
objComm.Parameters.Append objComm.CreateParameter("@tableName",adVarChar,adParamInput, 50)
objComm.Parameters("@tableName")=Request("tableName")
rsData.CursorLocation = adUseClient
rsData.CursorType = adOpenStatic
Set rsData.Source = objComm
rsData.Open
If NOT rsData.EOF AND NOT rsData.BOF then
Do While NOT rsData.EOF
rsDataOldValue = rsData("OldValue")
rsDatanewValue = rsData("NewValue")
rsData.MoveNext
Loop
End If
rsData.Close
Set rsData = Nothing
Conn.Close
Set Conn = Nothing
Set objComm = Nothing
Как преобразовать байтовый массив в правильное строковое значение?
Спасибо