procedure TForm1.Button2Click(Sender: TObject);
begin
  adoquery1.Close;
  adoquery1.sql.Clear ;
  adoquery1.SQL.add('insert into temp_data(data_code,data_desc,data_type,data_long,data_flag) values(:T_1,:T_2,:T_3,:T_4,:T_5)');
  adoquery1.Parameters.ParamByName('T_1').value:='GAB000';
  adoquery1.Parameters.ParamByName('T_2').value:='乱七八糟';
  adoquery1.Parameters.ParamByName('T_3').value:='C';
  adoquery1.Parameters.ParamByName('T_4').value:='3';
  adoquery1.Parameters.ParamByName('T_5').value:='Y';
  adoquery1.ExecSQL ;
end;
这段程序执行没有问题,但数据库内没有写入记录,请问程序错在哪儿,我想应该是参数传递问题,请哪位有耐心的大侠帮忙检查一下。

解决方案 »

  1.   

    不知道我说得对不对,你把参数赋值得语句放到sql语句前面试一下,可能sql 语句中的参数没有取到值
      

  2.   

    哈,哈,多谢诸位大侠相助,可是问题还没搞定。yu98041154(大脑袋)说的有一定道理,因为我将做了一个检查, 在execsql前显示了一下SQL语句,
    showmessage(adoquery1.sql.text);
    结果为
    insert into temp_data (
    data_code,data_desc,data_type,data_long,data_flag) 
    values(?,?,?,?,?)
    但不知为何会如此。
      

  3.   

    参数名不用T_XXX之类的试试, 瞎猜的
      

  4.   

    不要用参数了。
    以下不是很好吗?如果要变的,就用几个变量代替多简单啊。
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      adoquery1.Close;
      adoquery1.sql.Clear ;
      adoquery1.SQL.add('insert into temp_data(data_code,data_desc,data_type,data_long,data_flag) values('GAB000','乱七八糟','C','3','Y')');
      adoquery1.ExecSQL ;
    end;
      

  5.   

    你将sql语句输出,到数据库中执行就知道了什么问题
      

  6.   

    这段程序没问题。
    换ADODataset试一下呀!
      

  7.   

    你用showmessage(adoquery1.sql.text);
    检查的结果为:
    insert into temp_data (
    data_code,data_desc,data_type,data_long,data_flag) 
    values(?,?,?,?,?)既然是字符型的起码应该在字符的两端用引号才对。
    如 insert into Temp_data (Data_code) values ('fdsafd');如果你在执行时启用了事务,虽然执行了,没有提交,那也没有执行结果。
    好好检查吧!
      

  8.   

    启用 MS SQL SERVER 的 Profiler 跟踪一下,
    如果你用 MS SQL
      

  9.   

    应该是要本就没有提交上去。因为应该没有发生异常。你可以用sql monitor trace一下看。
      

  10.   

    你要加入adoquery1.active:=true;這樣就可以了
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    adoquery1.active:=true;  
    adoquery1.Close;
      adoquery1.sql.Clear ;
      adoquery1.SQL.add('insert into temp_data(data_code,data_desc,data_type,data_long,data_flag) values(:T_1,:T_2,:T_3,:T_4,:T_5)');
      adoquery1.Parameters.ParamByName('T_1').value:='GAB000';
      adoquery1.Parameters.ParamByName('T_2').value:='乱七八糟';
      adoquery1.Parameters.ParamByName('T_3').value:='C';
      adoquery1.Parameters.ParamByName('T_4').value:='3';
      adoquery1.Parameters.ParamByName('T_5').value:='Y';
      adoquery1.ExecSQL ;
    end;