将参数传递给TADOStoredProc(Delphi)的更好方式 [英] A better way of passing parameters to a TADOStoredProc (Delphi)

查看:958
本文介绍了将参数传递给TADOStoredProc(Delphi)的更好方式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要将大量SQL查询转换为存储过程。我有一些代码在一个Delphi程序中一次更新大约20或30个值。我可以处理创建一个存储过程来做这样的事情。问题是我将参数传递到存储过程的方式非常庞大,如下所示:

I am needing to convert a large amount of SQL queries into stored procedures. I have some code that updates about 20 or 30 values at one time in one Delphi procedure. I can handle creating a stored procedures to do such a thing. The problem is my way to pass parameters to stored procedures is very bulky like this:

    with stored_procedure do......
    Param := Parameters.AddParameter;
    Param.Name := '@SSN';
    Param.Value := edtSSN.text;

    Param := Parameters.AddParameter;
    Param.Name := '@FirstName';
    Param.Value := edtFirstName.Text;

    Param := Parameters.AddParameter;
    Param.Name := '@LastName';
    Param.Value := edtLastName.Text;

    Param := Parameters.AddParameter;
    Param.Name := '@UserRID';
    Param.Value:= GetRIDFromCombo(cbUser);

我也不确定是否导致内存泄漏(是否有必要释放这样的TParameter对象? )

I also am not sure if that causes a memory leak(is it necessary to free such TParameter objects?)

任何人都有更好的处理大量参数的方法? (我不能使用一个新的库,我必须使用ADO,而我使用的SQL是MSSQL)(也是我不使用ADO.net)

Anyone have a better way of handling a large amount of parameters? (I can not use a new library. I must use ADO, and the SQL I use is MSSQL) (also, I'm NOT using ADO.net)

推荐答案

这不会造成内存泄漏。 stored_procedure将清理其参数。您可以通过将以下内容添加到您的.dpr中来确认:FastReader = $;

This doesn't cause a memory leak. stored_procedure will clean up its parameters. You can confirm this with FastMM by adding the following to your .dpr:

  ReportMemoryLeaksOnShutdown := True;

首先,我将摆脱with语句。它可以导致更多的问题和更少的可读代码。

First, I'd get rid of the "with" statement. It can lead to more problems and less readable code.

我将创建一个帮助程序方法,接受存储过程,参数名称和参数值,这将使你的代码更易于管理。

I'd create a helper method that accepts a stored procedure, a parameter name and a parameter value, which will make your code more manageable.

AddParam(stored_procedure, '@SSN', edtSSN.text);
AddParam(stored_procedure, '@FirstName', edtFirstName.Text);
AddParam(stored_procedure, '@LastName', edtLastName.Text);
AddParam(stored_procedure, '@UserRID', GetRIDFromCombo(cbUser));

这篇关于将参数传递给TADOStoredProc(Delphi)的更好方式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆