【问题标题】:Inserting a record in sybase db table using stored procedure - delphi programming使用存储过程在sybase db表中插入记录-delphi编程
【发布时间】:2014-11-09 12:52:42
【问题描述】:

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

【问题讨论】:

  • 我会开始here
  • 我已经通过 FireDac 组件连接到我的数据库。问题是我不确定这是否是使用存储过程插入记录的好方法,而且我不知道如何将文本从 tEdit 字段转换为必须插入的值:/ 我很困惑
  • 使用 SP 来添加记录很好,但是 Delphi 开发人员并不总是能够决定将哪些内容放入数据库服务器(我的意思是,就可用的 SP 而言,而不是数据而言)。谷歌提供了一个关于在 Delphi 应用程序中使用 db-aware 控件的良好在线教程——你确实意识到 Delphi 带有诸如 TDBEdit 之类的控件,它通过 TDataSet 对数据库数据进行操作,所以你根本不需要 TEdits?请参阅 OLH。

标签: sql delphi stored-procedures sybase-asa delphi-xe7


【解决方案1】:

这里有几个选项,这取决于您使用的 VCL 控件。 (1)。您可以通过 tTable 组件插入。这让您有一个快速、简单、低级别的控制。您将组件放在表单上,​​设置组件属性(表名等),然后像

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 代码,只需更新一次(在数据库中),而不必在应用程序中更改它,然后将应用程序分发给多个用户。

此代码几乎与 (2) 相同,尽管我不知道您的 VCL 库的细节。但实际上,您将指定要运行的例程、指定参数值,然后执行存储过程。

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

这里有一个稍微复杂一点的例子,使用一个叫做 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    相关资源
    最近更新 更多