想把excel里的内容读到流里,再保存到oracle的BLOB里,但报错。
从excel读到流:
Close;
SQL.Clear;
SQL.Add('select blob from [Sheet1$]');
Open;
proc_memStr:=ADOQuery1.CreateBlobStream(fIELDbYnAME('BLOB'),bmRead);
再保存到blob里:
close;
sql.Clear;
sql.Add('insert into TEST_FOR_BLOG (RTF_FILE) VALUES (:RTF_FILE)');
Parameters.ParamByName('RTF_FILE').LoadFromStream(proc_memStr,ftblob);
ExecSQL;
运行到最后一句时报错:“不正常定义参数对象。提供了不一致或不完整的信息”;如果把proc_memStr先写到rtf文件里,再用loadfromfile加载的话就没问题。
从excel读到流:
Close;
SQL.Clear;
SQL.Add('select blob from [Sheet1$]');
Open;
proc_memStr:=ADOQuery1.CreateBlobStream(fIELDbYnAME('BLOB'),bmRead);
再保存到blob里:
close;
sql.Clear;
sql.Add('insert into TEST_FOR_BLOG (RTF_FILE) VALUES (:RTF_FILE)');
Parameters.ParamByName('RTF_FILE').LoadFromStream(proc_memStr,ftblob);
ExecSQL;
运行到最后一句时报错:“不正常定义参数对象。提供了不一致或不完整的信息”;如果把proc_memStr先写到rtf文件里,再用loadfromfile加载的话就没问题。
qry1.open;
qry1.append;
TBlobField(Qry1.FieldByName('字段')).loadfromstream(流);
qry1.post;
Close;
SQL.Clear;
SQL.Add('select blob from [Sheet1$]');
Open;
proc_memStr:=ADOQuery1.CreateBlobStream(fIELDbYnAME('BLOB'),bmRead);
或把最后一句改成:
TBlobField(fieldbyname('RTF_FILE')).LoadFromStream(proc_memStr);
就会报错:“Invalid class typecast”;
怎样才能把这种短字符串读到流中去呢?