我想利用delphi向数据库内插入数据,代码大致如下:
 [align=center][align=left]for i:=0 to  adj_number-1 do
  begin
    str1:=adjpath[i];
       SQLstr:='insert into flow(roadsegment,vehicletype,vehicleclass,vehicleflow)    select '+''''+str1+''''+',vehicletype,vehicleclass,count(*) as result from exit2010110520101 where chinesepath like '+QuotedStr('%'+str1+'%')+' group by vehicletype,vehicleclass';
    ADOquery1.Close;
    ADOquery1.SQL.clear;
    ADOquery1.SQL.Add(SQLstr);
    ADOquery1.ExecSQL;
  end;[/align][/align]
其中,adjpath[i]中存放的是‘韦曲→曲江’、‘空工→白鹿塬’、…等一些字符串。
请问,为什么adjpath[i]中的字符串不能插入flow表中呢?

解决方案 »

  1.   

    SQLstr:='insert into flow(roadsegment,vehicletype,vehicleclass,vehicleflow) select '+ str1 +',vehicletype,vehicleclass,count(*) as result from exit2010110520101 where chinesepath like '+QuotedStr('%'+str1+'%')+' group by vehicletype,vehicleclass';
      ADOquery1.Close;
      ADOquery1.SQL.clear;
      ADOquery1.SQL.Add(SQLstr);
      ADOquery1.ExecSQL;
      end;
      

  2.   

    理解错,还以为str1是要取的字段名。
    楼主可以ADOquery1.SQL.Add(SQLstr);这句设置断点,选中sqlstr,然后ctrl+f7取出sql语句到数据库执行下,看报什么错误
      

  3.   

    在数据库下用下面的语句试验过,插入成功了
    insert into flow(roadsegment,vehicletype,vehicleclass,vehicleflow) 
    select ‘甘泉-南泥湾’,vehicletype,vehicleclass,count(*) as result from exit2010110520101 where chinesepath like '%甘泉-南泥湾%' group by vehicletype,vehicleclass
    在delphi下就怎么试都不成功
      

  4.   

    QuotedStr('%'+str1+'%')这函数内容是啥?如果是纯字符串的话少拼个引号
    至于调试,加个断点f8
      

  5.   

    现在没有错误,就是插入不进去
    QuotedStr('%'+str1+'%')这个是用来查找chinesepath中含有str1的那些记录
    例如‘黄陵-阿党-洛川-富县-甘泉-南泥湾-延安南’中就含有‘甘泉-南泥湾’
      

  6.   

     把SQLstr改下
    :='insert into flow(roadsegment,vehicletype,vehicleclass,vehicleflow) select '+''''+str1+''''+',vehicletype,vehicleclass,count(*) as result from exit2010110520101 where chinesepath like ''%'+str1+'%'' group by vehicletype,vehicleclass';