各位高手: 我是初学者,做了一个窗体,上面有好多edit、dbedit,我输入内容后想将text中的东西保存到sql server中的数据库中的一个表中(追加一条记录),请问我如下所写是否正确:
 我用了ADOconnection、ADOquery、datasource连接数据库(shbx2)
 
with ADOquery1 do
   ADOquery1.close;
   ADOquery1.SQL.Clear ;
   ADOquery1.SQL.Add('insert into 补缴情况表',);
   ADOquery1.SQL.Add('values('''+dbedit1.Text+''','''+edit6.Text+''',');
    ADOquery1.SQL.Add(''''+edit2.Text+''','''+edit1.Text+''','''');
   ADOquery1.ExecSQL;问题1:如上所写是否正确?一行中sql语句写不开时,换行写,上一行的最后是否需要“,”?
问题2:如果“补缴情况表”中有10个字段,而窗体中需要输入的只有5个字段,我保存
      时values()只列出5个可以吗?还是必须全部列出?
                              谢谢

解决方案 »

  1.   

    1、需要,因为values中的所有数据都需要用','格开
    2、列出5个就可以了————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  2.   

    问题1:引号太多,我都看花眼了。换行写,上一行的最后不需要“,”
    var
      SqlStr: string;
    begin
      SqlStr := format('insert into 补缴情况表 values('%s', '%s', '%s', '%s')',  
        [dbedit1.Text, edit6.Text,edit2.Text, edit1.Text]);
      with AdoQuery1 do
      begin
        Close;
        Sql.Text := SqlStr;
        ExecSql;
      end;
    end;
      

  3.   

    问题1:不用加','号了,这些问题你在PC上试一下就可以了
    问题2:如果数据表中的字段恰好为5个,可以不用列出Values,否则应该插入哪一个字段就要对应写上那一个字段
      

  4.   

    随便找一本sql的书上面都说的很详细的,
    这个地方本来主观性相对就高一些,
    在这里你想找到客观的基础知识?呵呵,地方不太对,
    估计你在这问一下1+1=?
    都会有很多种不同的答案呵呵,
      

  5.   

    顺便说一下,关于你上面的问题,我的一个习惯写法是:
    with adoquery1 do
     begin
       close;
       sql.clear;
       sql.text := 'insert table1(field1,field2,field3,field4,field5)'+
                   'values(:1,:2,:3,:4,:5)';
       parameters.parambyname('1').value := edit1.text;
       .
       .
       .
       parameters.parambyname('5').value := edit5.text;
       execsql;
     end;