加密字符串保存与读取
加密后的字符串
Jn'%+E..亷檿亷憠庘D;[G$.厱欛5NW
请教如何将这样的数据保存到sqlserver数据库,并读取出来。谢谢高手。
[解决办法]
最好base64编码再存到数据库,当作字符串
[解决办法]
写的时候类似这样:
// 尝试连接数据库
try
{
con->Connected = true;
}
catch (...)
{
return;
}
// 假设要存储的数据是255个字节的byte数组
BYTE bt[255];
for (int i = 0; i < 255; i++)
bt[i] = i + 1;
// 向数据库插入一条记录,用参数的形式传输二进制数据
qry->Close();
qry->SQL->Text = "insert into 表名(二进制字段) values(:vBinary)";
int b[2] = {0, 255};
Variant v = VarArrayCreate(b, 1, varByte);
for (int i = 0; i < 255; i++)
v.PutElement(bt[i], i + 1);
qry->Parameters->ParamByName("vBinary")->Value = v;
qry->ExecSQL();
SafeArrayDestroyData(v.parray);
try
{
con->Connected = true;
}
catch (...)
{
return;
}
qry->Close();
qry->SQL->Text = "select 二进制字段名 from 表名 where 条件";
qry->Open();
if (qry->RecordCount > 0)
{
Variant v = qry->FieldByName("二进制字段名")->AsVariant;
if (v.IsArray())
{
// 获取二进制数据的长度
int nCount = v.ArrayHighBound() - v.ArrayLowBound();
// 创建一个数组来接受这些数据
LPBYTE lp = new BYTE[nCount];
// 将二进制数据逐一读取到Byte数组中
for (int i = v.ArrayLowBound(); i < v.ArrayHighBound(); i++)
{
lp[i] = v.GetElement(i);
}
// 使用Byte数组的代码略去
// ...
// ...
// 最后记的清场
delete []lp;
}
}
qry->Close();