使用存储过程-delphi编程在sybasedb表中插入一条记录



我是用delphi编程的新手。我目前正在创建一个简单的笔记本程序,我需要一些帮助。我有一个名为contacts的表单,包含5个编辑字段。我想我可以在我的sybase数据库中创建一个存储过程,将记录插入Contacts表,这样我就可以用delphi程序调用它了。如何在delphi中调用此过程?将要插入的值应该取自用户输入到这些tEdit字段中的值。有人有什么建议吗?还是我想错了?提前感谢

这里有几个选项,这将取决于您使用的VCL控件。(1) 。您可以通过t表格组件插入。这让你有一个快速,简单,低水平的控制。您将组件放在表单上,设置组件属性(表名等),然后进行类似的操作

MyTable.Open;
MyTable.Insert; (or maybe append)
MyTable.FieldByName('MY_FIELD').AsString := 'Bob'; // set the field values
MyTable.post;

(2) 。使用SQL。在表单上删除SQL组件。使用参数设置SQLText属性;例如:"插入表(MyField)值:X"。我的观点是,这在复杂的情况下更容易做到,相关的子选择,等等。

MySQL.Close;
MySQL.ParamByName('X').AsString := 'BOB';
ExecSQL;

(3) 。使用存储过程。-这样做的好处是,它们可由多个应用程序使用,并且可以轻松更改。如果你想更新SQL代码,你可以更新一次(在数据库中),而不是必须在应用程序中更改它,然后将应用程序分发给多个用户。

尽管我不知道你的VCL库的具体情况,但它的代码几乎可以识别为(2)。实际上,您将指定要运行的例程,指定参数值,然后执行存储过程。

请注意,所有这些例程都将返回错误代码或异常代码。最好的做法是始终检查。。。

这里有一个稍微复杂一点的示例,使用一个名为qLoader的SQL语句。数据模块上存在qLoader。我传递一个参数,执行SQL语句,然后遍历所有结果。

  try
  with dmXLate.qLoader do
     begin
     Close;
     ParamByName('DBTYPE').AsString := DBType;
     Open;
     while not dmXLate.qLoader.Eof do
         begin
         // Here is where we process each result
         UserName:= dmXLate.qLoader.FieldByName('USERNAME').AsString;    
         dmXLate.qLoader.Next;
         end;

      end;
except
      on E: Exception do
      begin
        ShowMEssage(E.Message);
        exit;
      end;
    end;

相关内容

最新更新