MYSQL +DELPHI 问题。高手来啊。要死啦

时间:2021-10-10 22:36:54
我遇到过这样问题,请来看看,
 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。请帮帮我啊

12 个解决方案

#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


我觉得程序里存时间,然后取出来的时候再转变回去,被直接存时间要省事的多,当然存的时候要做处理,这样才能比较。

#5


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

#6


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

#7


不知道谁用过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来连接。高手救命啊。马上给分

#8


发到你信箱

#9


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

#10


当运行时出现:insert into test values('dss','20031221')出错。他的意思就是把2003-12-21日期通过delphi变成了20031221 这样mysql就不认识了。


----------------------------------------------

你这句出错提示已经错啦,试试:insert into test ('cc_name') values ('dss')
还要注意其它值允不允许插入空值啊

#11


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

#12


'DateTimePicker1.Date'
加引号干什么?

'20031221'当然不是SQL语法中的目期类型。当然不行。

#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


我觉得程序里存时间,然后取出来的时候再转变回去,被直接存时间要省事的多,当然存的时候要做处理,这样才能比较。

#5


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

#6


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

#7


不知道谁用过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来连接。高手救命啊。马上给分

#8


发到你信箱

#9


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

#10


当运行时出现:insert into test values('dss','20031221')出错。他的意思就是把2003-12-21日期通过delphi变成了20031221 这样mysql就不认识了。


----------------------------------------------

你这句出错提示已经错啦,试试:insert into test ('cc_name') values ('dss')
还要注意其它值允不允许插入空值啊

#11


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

#12


'DateTimePicker1.Date'
加引号干什么?

'20031221'当然不是SQL语法中的目期类型。当然不行。