为了实现向数据库中添加数据,代码如下:
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不兼容

解决方案 »

  1.   

    你数据库字段的类型是varchar,而你参数值是一个流,那就有冲突了,要不你把字段改成image,要不就把传给参数值改成一个字符串
      

  2.   

    不用流还是不行, 改为
    Parameters.ParamByName('topic').Value := nQ.Text;
      nQ: TStringList;
      

  3.   

    咋了,还报那个错?
    下面这句话也应该注释掉
    Parameters.ParamByName('topic').DataType := ftBlob;
      

  4.   

    Parameters.ParamByName('topic').DataType := ftBlob;
    这句化注释掉会出现新的错误
      

  5.   

    Parameters.ParamByName('topic').DataType := ftString;

    Parameters.ParamByName('topic').Value := nQ.Text;
      

  6.   

    无法将NULL值插入列'Enum',表'test.dbo.examination';该列不允许空值。Insert失败
      

  7.   

    DeadWolf,按你的改发;
    会出现下面的错误:“无法将NULL值插入列'Enum',表'test.dbo.examination';该列不允许空值。Insert失败”
      

  8.   

    varchar是一个指针,你到底要传什么数据?图片?
      

  9.   

    你没给Enum字段赋值,而数据库中又不允许为空,就报这个错
    要不你设置称允许空值,要不你在sql语句中给该字段赋值
      

  10.   

    xjwy(程序春秋) ,我是传一段文本数据;
    请问图片或公式数据也能传吗?
      

  11.   

    ithinkthereforeiam(),
    因Enu是key,不能为空的;
    我在SQL中增加了一句,  
    Parameters.ParamByName('Enum').Value := '12';
    报错:csql:Parameter 'Enum' not found
      

  12.   

    改成下面这样
    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;
      

  13.   

    ithinkthereforeiam,
    你这样改是可以了,请问数据库中能否保存图片数据
      

  14.   

    不能直接用insert SQL语句需要使用TBlobField LoadFromStream 方法
    或者 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;
      

  15.   

    首先需要用TBlobField對字段進行強制轉換,另,數據庫中最好用NTEXT,TEXT,IMAGE類型。