请大家看看这两个函数是否存在资源释放方面的有关问题
请大家看看这两个函数是否存在资源释放方面的问题?
unit UntSQLHelper;
interface
uses
ADODB, Uni, DB, SysUtils, StrUtils, Forms, Controls, ComObj, Windows, Activex, Variants, ADOInt, Dialogs;
type
SQLHelper = class
public
{ 返回一个DataSet }
class function ExecuteDataSet(conn: TADOConnection; strSQL: string): TDataSet; overload;
{ 直接获取一个结果值,返回结果为变体类型,可直接赋值使用。}
class function GetFieldValue(conn: TADOConnection; strSQL: string): olevariant; overload;
end;
implementation
{ SQLHelper }
class function SQLHelper.ExecuteDataSet(conn: TADOConnection;
strSQL: string): TDataSet;
var
query: TADOQuery;
begin
query := TADOQuery.Create(nil);
query.Connection := conn;
query.SQL.Clear;
query.SQL.Add(strSQL);
query.Open;
result := query;
end;
class function SQLHelper.GetFieldValue(conn: TADOConnection; strSQL: string): OleVariant;
begin
result := SQLHelper.ExecuteDataSet(conn, strSQL).Fields.Fields[0].Value;
end;
end.
GetFieldValue函数里需不需要释放那个DataSet?如果有问题,怎么改比较好?
谢谢大家。
------解决方案--------------------
跨进程修改DBGRID内容,有没有例子,没人会我
------解决方案--------------------
每执行一次GetFieldValue就会创建一个,需要释放
------解决方案--------------------
query 做为一个参数传递进去
------解决方案--------------------
ExecuteDataSet返回的对象,用完后要释放
------解决方案--------------------
这种写法没法释入DataSet, 把DataSet做为参数传进去。用完释放。
------解决方案--------------------
你可以写个函数来释放这个dataset
就像内存申请和内存释放一样
unit UntSQLHelper;
interface
uses
ADODB, Uni, DB, SysUtils, StrUtils, Forms, Controls, ComObj, Windows, Activex, Variants, ADOInt, Dialogs;
type
SQLHelper = class
public
{ 返回一个DataSet }
class function ExecuteDataSet(conn: TADOConnection; strSQL: string): TDataSet; overload;
{ 直接获取一个结果值,返回结果为变体类型,可直接赋值使用。}
class function GetFieldValue(conn: TADOConnection; strSQL: string): olevariant; overload;
end;
implementation
{ SQLHelper }
class function SQLHelper.ExecuteDataSet(conn: TADOConnection;
strSQL: string): TDataSet;
var
query: TADOQuery;
begin
query := TADOQuery.Create(nil);
query.Connection := conn;
query.SQL.Clear;
query.SQL.Add(strSQL);
query.Open;
result := query;
end;
class function SQLHelper.GetFieldValue(conn: TADOConnection; strSQL: string): OleVariant;
begin
result := SQLHelper.ExecuteDataSet(conn, strSQL).Fields.Fields[0].Value;
end;
end.
GetFieldValue函数里需不需要释放那个DataSet?如果有问题,怎么改比较好?
谢谢大家。
------解决方案--------------------
跨进程修改DBGRID内容,有没有例子,没人会我
------解决方案--------------------
每执行一次GetFieldValue就会创建一个,需要释放
------解决方案--------------------
query 做为一个参数传递进去
------解决方案--------------------
ExecuteDataSet返回的对象,用完后要释放
------解决方案--------------------
这种写法没法释入DataSet, 把DataSet做为参数传进去。用完释放。
------解决方案--------------------
你可以写个函数来释放这个dataset
就像内存申请和内存释放一样