我遇到过这样问题,请来看看,
 adotable1.append;
 adotable1.fieldbyname('name').asstring:='edit.text';
 adotable1.fieldbyname('date').asdatetime:='DateTimePicker1.Date';
 adotable1.post;
 我是通过ADO再通过ODBC连接MYSQL的。
 当运行时出现:insert into test values('dss','20031221')出错。他的意思就是把2003-12-21日期通过delphi变成了20031221 这样mysql就不认识了。
 但是我通过BDE再通过ODBC连接就可以。但是我都是用ado做的。不想用BDE。
  所以我想问问大家。我要怎么办法呢。是升级MYSQL的驱动程序还是。有什么其他方法呢。谁用过MYSQL+DELPHI。请帮帮我啊

解决方案 »

  1.   

    MYSQL的日期类型格式为;'yyyy-mm-dd hh:mm:ss',这样插入肯定不行的,
    FormatDateTime('yyyy-mm-dd hh:mm:ss',DateTimePicker1.DateTime)
    然后再插入。
      

  2.   

    adotable1.fieldbyname('date').asdatetime:='DateTimePicker1.Date'
    改成
    adotable1.fieldbyname('date').value:=DateTimePicker1.Date
      

  3.   

    'DateTimePicker1.Date'
    加引号干什么?'20031221'当然不是SQL语法中的目期类型。当然不行。
      

  4.   

    兄弟们,上面的我刚试过还是不行啊。他还是自动转化成如:20031212,他好象是ADOODBC处理的不是我能处理了的,因为我用BDE ODBC连接就可以,但是BDE打包的时候要把那个东东带上啊麻烦。所以我现在想问问谁知道那里有MYSQL 最新的驱动程序下载(支持ADO ODBC)我现在的好象是3.23.30版,谁有4.0.版啊。急哦。请帮帮啊
     而且我用adotable1.delete 也出错。只要字段有时间,错误:20031212 ,总之是时间错误。
    我要最新的MYSQL 最新的驱动哦啊
      

  5.   

    yyyyMMdd是国际日期格式,可能是ADO自动转换的。
      

  6.   

    不知道谁用过delphi跟MYSQL组合没有。用过的人应该会遇到这样的问题。
    环境是:我通过ADOConnection 再通过ODBC连接MYSQL。如果通过BDE 再通过ODBC连接,下面的没有问题。
     adotable1.append;
     adotable1.fieldbyname('cc_name').asstring:=edit1.text;
     adotable1.post;
    这样也出错。我开始还以为只是时间问题呢。
    保存图片
    if Assigned(Image1.Picture.Graphic) then
      begin
        myjpeg:=tjpegimage.Create;         //保存图形文件
        myjpeg.Assign(image1.Picture.Graphic);
        ms:=tmemorystream.Create;
        myjpeg.SaveToStream(ms);
        ms.Position:=0;
        TBlobField(Table1.FieldbyName('b')).LoadFromStream(MS);
        myjpeg.Free;
        ms.Free;
      end;
    也出错。如果不是图形我还可以辛苦一下通过 “insert into base_table valuse(edit1.text,......)”这样。但是图形呢。怎么能通过insert into ...这样呢。
    我又不想通过BDE来连接。高手救命啊。马上给分
      

  7.   

    我前段时间已经做过delphi通过odbc连接mysql,没任何问题,是不是你自己的问题?
    试一下
     adotable1.append;
     adotable1.fieldbyname('cc_name').value:=trim(edit1.text);
     adotable1.post;
      

  8.   

    当运行时出现:insert into test values('dss','20031221')出错。他的意思就是把2003-12-21日期通过delphi变成了20031221 这样mysql就不认识了。
    ----------------------------------------------你这句出错提示已经错啦,试试:insert into test ('cc_name') values ('dss')
    还要注意其它值允不允许插入空值啊
      

  9.   

    搞不懂,既然用odbc,干吗还有ADO控件??
      

  10.   

    'DateTimePicker1.Date'
    加引号干什么?'20031221'当然不是SQL语法中的目期类型。当然不行。