为了实现向数据库中添加数据,代码如下:
SQL.Add('insert into examination(topic,type,answer,difficulty,,requirement,people,data)');
SQL.Add('values(:topic,:type,:answer,:difficulty,:,:requirement,:people,:date)');
Parameters.ParamByName('topic').DataType := ftBlob; // ftBlob
Parameters.ParamByName('topic').Value := StreamToVariant(streamQ);
Parameters.ParamByName('type').Value := ComboBox1.Text;
Parameters.ParamByName('answer').Value := nA.Text;
ExecSQL;但运行时会出现这样的错误:
操作数类型冲突:image与varchar不兼容
SQL.Add('insert into examination(topic,type,answer,difficulty,,requirement,people,data)');
SQL.Add('values(:topic,:type,:answer,:difficulty,:,:requirement,:people,:date)');
Parameters.ParamByName('topic').DataType := ftBlob; // ftBlob
Parameters.ParamByName('topic').Value := StreamToVariant(streamQ);
Parameters.ParamByName('type').Value := ComboBox1.Text;
Parameters.ParamByName('answer').Value := nA.Text;
ExecSQL;但运行时会出现这样的错误:
操作数类型冲突:image与varchar不兼容
Parameters.ParamByName('topic').Value := nQ.Text;
nQ: TStringList;
下面这句话也应该注释掉
Parameters.ParamByName('topic').DataType := ftBlob;
这句化注释掉会出现新的错误
再
Parameters.ParamByName('topic').Value := nQ.Text;
会出现下面的错误:“无法将NULL值插入列'Enum',表'test.dbo.examination';该列不允许空值。Insert失败”
要不你设置称允许空值,要不你在sql语句中给该字段赋值
请问图片或公式数据也能传吗?
因Enu是key,不能为空的;
我在SQL中增加了一句,
Parameters.ParamByName('Enum').Value := '12';
报错:csql:Parameter 'Enum' not found
SQL.Add('insert into examination(Enum,topic,type,answer,difficulty,,requirement,people,data)');
SQL.Add('values(:Enum,:topic,:type,:answer,:difficulty,:,:requirement,:people,:date)');
Parameters.ParamByName('Enum').Value := '12';
Parameters.ParamByName('topic').Value := nQ.Text;
Parameters.ParamByName('type').Value := ComboBox1.Text;
Parameters.ParamByName('answer').Value := nA.Text;
ExecSQL;
你这样改是可以了,请问数据库中能否保存图片数据
或者 TDataSet 的 CreateBlobStream
给你贴个帮助上的示例var
MS: TMemoryStream;
begin
if not (ClientDataSet1.State in [dsInsert, dsEdit]) then
ClientDataSet1.Insert;
MS := TMemoryStream.Create();
try
Image1.Picture.Bitmap.SaveToStream(MS);
ClientDataSet1Images.LoadFromStream(MS);
finally
MS.Free;
end;
ClientDataSet1.Post;
end;