A、 首先列出网上搜索的一些信息:
方法1:
System.Text.UnicodeEncoding converter = new System.Text.UnicodeEncoding();
byte[] inputBytes =converter.GetBytes(inputString);
string inputString = converter.GetString(inputBytes);
方法2:
string inputString = System.Convert.ToBase64String(inputBytes);
byte[] inputBytes = System.Convert.FromBase64String(inputString);
B、接着列出一些调试中出现的错误现象:
获取的byte[]类型值,如下:
语句 |
返回值 |
APPID = reader_ApplicationID.GetValue(0)as string; |
null |
APPID =System.Convert.ToString(arrAPPID); |
System.Byte[] |
APPID =System.Convert.ToBase64String(arrAPPID); |
KWB+Au5GRKGZ3XDuHSf9tA== |
System.Text.UnicodeEncoding convert =new System.Text.UnicodeEncoding(); APPID =convert.GetString(arrAPPID); |
)`~ u-26603 ?D輕?‘ (乱码) |
APPID =Encoding.Default.GetString(arrAPPID); |
)`~ u-26603 ?D輕?‘ (乱码) |
查看数据表,Oracle数据库表中存储的值为:29607E02EE4644A199DD70EE1D27FDB4
分析存储结果为十六进制字符,编写函数实现byte[]转换成十六进制string功能即可。
private string Byte2String(byte[] arrByte)
{
StringBuilder sb = new StringBuilder();
foreach (byte b in arrByte)
{
sb.Append(b > 15 ? Convert.ToString(b, 16) : ‘0‘ +Convert.ToString(b, 16));
}
return sb.ToString();
}
调用此函数实现byte[]到string的转换,因为数据表中存储值为大写,所以利用ToUpper()方法转换下得到。
APPID = Byte2String(arrAPPID).ToUpper();
(3) 根据获取的string类型值,进行进一步的操作,例如:
OracleCommand cmd_UserID = conn.CreateCommand();
cmd_UserID.CommandType = CommandType.Text;
cmd_UserID.CommandText = "select USERID from ORA_ASPNET_USERS where LOWEREDUSERNAME=‘" + userName.ToLower() + "‘ and APPLICATIONID=‘" + APPID + "‘";