现在我需要向数据里面循环插入stringgrid中的数据,当stringgrid.cell[] 即有的单元格为空的时候我需要在数据库中表示为NULL即未知。请教高手们语句该怎么写?
我自己用两个edit试验了一下代码如下 
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  str1,str2:string;
begin
  if Trim(edit1.Text)='' then
     str1:=null
  else
     str1:=edit1.Text;
  str2:=edit2.Text;
  adocommand1.CommandText:='insert into table2([id],[path])values('''+str1+''','''+str2+''')';
  adocommand1.Execute;
end;
程序运行不成功,我想知道该怎么写代码才能达到我下面测试数据里面的格式
测试数据库格式如下
 id    path
 a     a
 NULL  b
 c     NULL
 d
 e
测试数据库列比较少,实际上stringgrid的列比较长的

解决方案 »

  1.   

    补充说明一下就是当edit1为空的时候id列就为NULL,edit2为空的时候path就为NULL
      

  2.   

    值的地方直接写null就可以,试试看
      

  3.   

    值得地方直接写NULL的话插入一条语句没有问题,但是要循环插入多条语句的话不同的纪录有可能为空的列不相同
      

  4.   

    顶。也想知道Delphi中关于NULL的解决办法
      

  5.   

    每次插入之前判断一下str1,str2是不是空,是空的话就插入null
      

  6.   

    使用str1:=#0 提示出现 "字符串 '' 之前有未闭合的引号 。"to dennyshao 每次插入之前可定会判断str1,str2是不是为空,关键是怎么插入NULL 
      

  7.   

    写个函数进行转换,如果字符串为空,则返回null
    function GetStrValue(value: string): string;
    begin
      if value='' then result := 'null'
      else result := ''''+result+'''';
    end;
    adocommand1.CommandText:= 'insert   into   table2([id],[path])values( '+GetStrValue(str1)+ ', '+GetStrValue(str2)+ ')'; 
      

  8.   

    to lynmison 我刚才试了一下 程序会插入一行数据(null,null)并不是并不是NULL即未知数据 。自己调了一下,出现了could not convert  variant of type (Null) into type(String) 错误
      

  9.   

    你的数据库中要插入的字段是字符串类型,你要插入'null'才可以的直接插入null,那是给整型字段准备的
      

  10.   

    uses StrUtils; //Ifthen(...)
    ...
    procedure   TForm1.BitBtn1Click(Sender:   TObject); 
    var 
        str1,str2:string; 
    begin 
        srt1 := Trim(edit1.Text); 
        str2 := Trim(edit2.Text)= ;     adocommand1.CommandText := 
          ' INSERT INTO table2 ([id],[path]) ' +
          ' VALUES(  '  +
              Ifthen(str1 = '', 'NULL', QuotedStr(str1) ) + ',' +
              Ifthen(str2 = '', 'NULL', QuotedStr(str2) ) +
          ' ) '; 
        adocommand1.Execute; 
    end;  
      

  11.   

    我是说SQL语句.而不是赋 null