想每10s向数据库写入一次数据,用了下面的程序,shijd是想写入写入时的时间,出错了,怎么改?
procedure TForm1.Timer1Timer(Sender: TObject);
var
  shijcha,shijd:tdatetime;begin  shijd:=strtodatetime(formatdatetime('yyyy-mm-dd hh:nn:ss',now()));
  adoqrywrite.Close;
  adoqrywrite.sql.text:='insert into 实时数据 (日期时间,BFG,COG,TSA,PSA) values(shijd,0.1,0.1,0.1,0.1)' ;  adoqrywrite.ExecSQL;
end;

解决方案 »

  1.   

    用ADOQuery的Parameters试试吧!
    begin
      ADOQuery1.SQL.Text := 'INSERT INTO Table1 (Field1, Field2, Field3, Field4) VALUES (:Field1, :Field2, :Field3, Field4)';
      ADOQuery1.Parameters.ParamByName('Field1').Value := Now;   //DateTime
      ADOQuery1.Parameters.ParamByName('Field2').Value := 'ABC'; //String
      ADOQuery1.Parameters.ParamByName('Field3').Value := 1234;  //Integer
      ADOQuery1.Parameters.ParamByName('Field4').Value := 12.34; //Float
      ADOQuery1.ExecSQL;
    end;
      

  2.   

    procedure TForm1.Timer1Timer(Sender: TObject);
    //var
     // shijcha,shijd:tdatetime;begin
    with adoqrywrit do
     begin  
       Close;
       SQL.Clear;
       SQL.Add(' INSERT INTO 实时数据 (日期时间,BFG,COG,TSA,PSA) ' );
       SQL.Add(' VALUES (GETDATE(),:BFG,:COG,:TSA,:PSA ) ');
       Parameters.ParamByName(:BFG).Value=0.1 ;
       Parameters.ParamByName(:COG).Value=0.1 ;
       Parameters.ParamByName(:TSA).Value=0.1 ;
       Parameters.ParamByName(:PSA).Value=0.1 ;
       ExecSQL;
     end;
    end;