ADOQuery中的问题。
void __fastcall TFormMain::NetRecv(TMessage & Msg)
{
String strNet = (char *)Msg.LParam;
String Opt = strNet.SubString(1,3);
int length = strNet.Length();
if(Opt == "DAT "){ // 写入初检复检数据库数据
String PicPath = strNet.SubString(strNet.Pos( '{ ')+1,(strNet.Pos( '} ')-strNet.Pos( '{ ')-1)); // 图片路径
String PicString = strNet.SubString(strNet.Pos( '} ')+1,(strNet.Pos( '> ')-strNet.Pos( '} ')-1)); // 图片名称
String tblString = strNet.SubString(strNet.Pos( '> ')+1,(strNet.Pos( '` ')-strNet.Pos( '> ')-1)); // 操作表名
String strSQL = strNet.SubString(strNet.Pos( '` ')+1,length); // 获得插入数据库语言
if(!FileExists(PicPath)){
PicPath = "E:\\Picture\\Error.jpg "; // 图片不存在则保存默认图片
}
try{
AQ_Opt-> Close();
AQ_Opt-> SQL-> Clear();
AQ_Opt-> SQL-> Text = strSQL;
AQ_Opt-> Parameters-> ParamByName( "picture ")-> LoadFromFile(PicPath.c_str(),ftBlob); // 这里正常
AQ_Opt-> ExecSQL();
RichEdit1-> Lines-> Add(Now().DateTimeString() + ": Insert " + tblString);
}catch(...){
RichEdit1-> Lines-> Add(Now().DateTimeString()+ ": Insert "+ tblString+ " Error ");
}
if(HBlink){
try{
AQ_HB-> Close();
AQ_HB-> SQL-> Clear();
AQ_HB-> SQL-> Text = strSQL;
AQ_HB-> Parameters-> ParamByName( "picture ")-> LoadFromFile(PicPath.c_str(),ftBlob); //注:这里存在问题
AQ_HB-> ExecSQL();
strSQL = "update "+ tblString + " set saveflag=1 where PictureName= ' " + PicString + " ' ";
AQ_Opt-> Close();
AQ_Opt-> SQL-> Clear();
AQ_Opt-> SQL-> Text = strSQL;
AQ_Opt-> ExecSQL();
RichEdit1-> Lines-> Add(Now().DateTimeString()+ ": Insert Server "+ tblString );
}catch(...){
}
}
}
}
错误:
AQ_Opt-> Parameters-> ParamByName( "picture ")-> LoadFromFile(PicPath.c_str(),ftBlob); // 第一次这里正常
AQ_HB-> Parameters-> ParamByName( "picture ")-> LoadFromFile(PicPath.c_str(),ftBlob); //注:第二次这里存在问题
如果换个方式将两个存储换一下第二个就不能存成功。应该是指针问题
请教决绝办法
[解决办法]
什么问题啊?写出详细问题描述吧!
[解决办法]
up
[解决办法]
什么数据库?什么数据引擎?
对于BOLB字段,如果是非ms数据库,建议不要用ado(至少要升级ADO)。
对oracle,用bde要改参数。
------解决方案--------------------
ding