从SpineEdit控件中得到日期,其中CSYear、CSMonth、CSDate、CSHour、CSMin均是string型:
CSYear := IntToStr(SpinEdit1.Value);   //年
CSMonth := IntToStr(SpinEdit2.Value);  //月
CSDate :=  IntToStr(SpinEdit3.Value);  //日
CSHour := IntToStr(SpinEdit4.Value);  //时
CSMin := IntToStr(SpinEdit5.Value);   //分现在要将得到的变量写入Oracle数据库,如下语句:
StrIns := 'insert into "tbl_bjdl"(bj_yymmdd) values(';
StrIns := StrIns+'to_date('+''''+CSYear+'-'+CSMonth+'-'+CSDate+' '+CSHour+':'+CSMin+''''+',';
StrIns := StrIns+'''yyyy-mm-dd hh24:mi'''+')'+')';
ADOQuery1.SQL.Add(StrIns);
ADOQuery1.Prepared;
ADOQuery1.ExecSQL;运行后总提示一个Ora-00911错误:无效字符
请高手指点

解决方案 »

  1.   

    有没有高手指点一下啊。to_date是Oracle中的函数,用在这里可能不对。那么delphi要把一个string值存入数据库中的date字段,应该怎么写代码啊?
      

  2.   

    你最好先检查一下StrIns+'to_date('+''''+CSYear+'-'+CSMonth+'-'+CSDate+' '+CSHour+':'+CSMin+''''+',';
    这里的引号不然你就 StrIns:=quotedstr(CSYear-CSMonth-CSDate CSHour:CSMin)
      

  3.   

    StrIns := 'insert into tbl_bjdl (bj_yymmdd) values(';
    StrIns := StrIns+'to_date('''+CSYear+'-'+CSMonth+'-'+CSDate+' '+CSHour+':'+CSMin+''''+',';
    StrIns := StrIns+'''yyyy-mm-dd hh24:mi'''+')'+')';
      

  4.   

    insert into "tbl_bjdl"(bj_yymmdd) values(
               ————————————
    该句明显错误
      

  5.   

    你看看csyear那些变量的值有没有错,你可以把最终的strins取出来,直接在oracle里执行,看提示什么错误
      

  6.   

    建议楼主使用 DateTimePicker 。
    假如数据集为 AdoQuery1.写如下语句:
    Adoquery1.close;
    Adoquery1.sql.clear;
    Adoquery1.Sql.add('Insert into table1(id,Date1) values(1,:date1)');
    Adoquery1.Parame..ParamByName('date1').value:=DateTimePick1.DateTime;
    AdoQuery1.open;
    则数据插入到Oracle数据库中。
      

  7.   

    strtodatetimeCSYear +'-'+CSMonth +'-'+CSDate+' '+CSHour+':'+ CSMin );
    就可变成日起时间型呀
      

  8.   

    采用这样的格式:‘yyyymmdd', 要保证CSMonth ,CSDate都为两位数!同时注意insert语句的空格!
      

  9.   

    ADOQuery1.sql.clear;
    StrIns := 'insert into tbl_bjdl(bj_yymmdd) values(';
    StrIns := StrIns+'to_date('+CSYear+'-'+CSMonth+'-'+CSDate+' '+CSHour+':'+CSMin+',';
    StrIns := StrIns+QuotedStr('yyyy-mm-dd hh24:mi')+')'+')'; //这里是重点
    ADOQuery1.SQL.Add(StrIns);
    ADOQuery1.Prepared;
    ADOQuery1.ExecSQL;
      

  10.   

    sqlstr:='insert into tablename(Datafield) values(TODATE(+'''+DATE+'''),(''YY-MM-DD''))';
      

  11.   

    if arrColType[i]='DATE' then
                sSqlStr:=sSqlStr+'TO_DATE('''+arrColValue[i]+''',''YYYY-MM-DD'')';