将字节数组转换为vbscript中的字符串值
问题描述:
我的数据库中有一个logTable用于someTable上的日志更改。将字节数组转换为vbscript中的字符串值
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
我如何可以转换字节数组正确的字符串值?
谢谢
答
您是否尝试过在您的SQL查询中投射?
SELECT CAST(oldvalue AS varchar(100)) from logTable
编辑:如果转换不会做的好,那么你需要写这样一个它在时间(字节字符串的一种转换函数注:我没有,因为我目前没有在测试这视窗)
function ByteArrayToString(theArray)
dim i, str
if vartype(theArray) < 8192 then
exit function
end if
for i=lbound(theArray) to ubound(theArray)
str = str & asc(theArray(i))
next
ByteArrayToString = str
end function
为了测试它尝试
MsgBox(ByteArrayToString(rsDataOldvalue))
+0
转换具有浮点类型的大值。例如:20000.75。它返回20000.8。我需要20000.75。我使用CAST(oldvalue AS nvarchar(max)),但没有帮助。 – Vyacheslav 2011-03-31 13:33:24
你能证明你用它来获得'newValue'和'oldValue'的代码?我真的不明白你期望得到什么以及你实际得到什么 – 2011-03-31 12:45:31
你能显示VarType(rsDataOldValue)的结果吗?如果它是一个数组,它应该是> 8192 – renick 2011-03-31 15:22:14