在delphi里面,我执行sql语句
'if not exists (select 1 from Images where ImageID=:ImageID)
insert into Images(ImageID,nSize, nType, nWidth, nHeight, Data) 
values(:ImageID,:nSize, :nType, :nWidth, :nHeight, :Data)
总出弹出'不正常地定义参数对象 提供了不一致'错误,百思不得其解,是怎么回事?

解决方案 »

  1.   

          ADOQuery2.Close;
          ADOQuery2.SQL.Clear;
          ADOQuery2.SQL.Add(strSQL2); //進行插入操作
          ADOQuery2.Parameters.ParamByName('ImageID').Value :=
            adoquery1.FieldByName('nImage').AsInteger;
          ADOQuery2.Parameters.ParamByName('nSize').Value :=
            adoquery1.FieldByName('nSize').AsInteger;
          ADOQuery2.Parameters.ParamByName('nType').Value :=
            adoquery1.FieldByName('nType').AsInteger;
          ADOQuery2.Parameters.ParamByName('nWidth').Value :=
            adoquery1.FieldByName('nWidth').AsInteger;
          ADOQuery2.Parameters.ParamByName('nHeight').Value :=
            adoquery1.FieldByName('nHeight').AsInteger;
          ADOQuery2.Parameters.ParamByName('Data').LoadFromStream(testStream,ftBlob); //讀取保存的內存圖
          ADOQuery2.Prepared := True;
          ADOQuery2.ExecSQL; 参数传递如上!
      

  2.   

     把 insert into Images(ImageID,nSize, nType, nWidth, nHeight, Data
    values(:ImageID,:nSize, :nType, :nWidth, :nHeight, :Data
    改成 这样试试 
        insert into Images(ImageID,nSize, nType, nWidth, nHeight, [Data]
    values(:ImageID,:nSize, :nType, :nWidth, :nHeight, :AData)有可能 Data 是内部的关键字,造成的原因 
     
      

  3.   

    我用的是delphi+access, 我在sql server做类似语句
    if not exists (select 1 from PL_UserTable where UserID=6)
    insert into PL_UserTable(UserID, UserName, UserPW, Grade)
    values(6, '6666', '666', '') 
    是没问题的,不知道是不是这些参数:ImageID,:nSize, :nType, :nWidth, :nHeight, :Data的问题。哎!
      

  4.   

     把DATA字段先不存測下。 或者把最後一個字段改個名字。
      

  5.   

    改成这样试试
    insert into Images(ImageID,nSize, nType, nWidth, nHeight, Data) 
    values(:ImageID,:nSize, :nType, :nWidth, :nHeight, :Data)
    where ImageID<>:ImageID
      

  6.   

    在sqlserver中可以执行的语句在access中不一定可以执行,是有区别的
      

  7.   

    :nImageID,是不是这个使用两次了。记得之前做了个东西。也是这样。不能识别的。
    最好用不一样的把。
      

  8.   

    楼上的,:ImageID参数我用不一样的也不行,算了我还是用老办法,先select * from where ImageID:=:ImageID判断, 然后再插入,只是麻烦点。
    多谢各位的关注,结帖了!