您好,在DLL中应该怎样操作数据库 ?需要注意哪些地方 ? 谢谢(20分)

  • 主题发起人 主题发起人 驿路的梦
  • 开始时间 开始时间
关注。
学习。
 
function Count(TableName: string): Integer; stdcall;
begin
CoInitialize(Nil) ;
with TADOQuery.Create(nil) do
begin
try
begin
ConnectionString := DbConnectionString;
Sql.Text := 'select count(*) from ' + TableName;
Open;
Result := RecordCount;
end;
finally
Free;
CoUninitialize
end;
end;
end;
 
xeen,您好,这样运行没有提示错了但是结果不对,无论怎样都只能返回 1

为什么 ?
 
faint,结果是1就对了.你把sql语句改成
'select * from '+ tablename 看看
 
何不作Com在Dll中?
 
xeen :
Sql.Text := 'select count(*) from ' + TableName;
我取的是记录数呀,不会只有一条呀,再说我删除几条纪录后还是 1 ? 您为什么说对呢 ?
我试试 Select * from table

zxbyh : Com 我还不会
 
xeen : 明白了,您是对的:)
谢谢您
 
'select count(*) from ' + TableName ; //只有一条

谢谢您

还有,我可以在DLL中读写库吗 ? 用这种方式,应该可以对吗 ?
 
在DLL访问数据库,CoInitialize不是叫你用在DLL中,而是要放在访问DLL的EXE里
另在Delphi或是BCB里写COM很容易,去找些资料即可,看李维的书!
 
cs 下好象不能使用table,若table 加索引的话
 
可以找个例子啊!
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1525777
有可以操纵数据库
 
使用Dll访问数据库是可以的,但是如果是大的数据库应用程序,如何处理各Dll之间公共数据共享,
网络连接共享,用户权限控制呢?期待大家的看法。
 
谢谢几位
我没分了,否则再开贴子......

To :没理头号 : 您好,我将 CoInitialize 放在调用DLL的 EXE 中没有成功,用 xeen 先生
讲的放在 DLL 中好了,也许是因为我不会用,您能讲讲吗 ? 谢谢
 
抄书的:
一个单元的initiialization部分的语句是在Windows加载包含该单元的模块(应用程序、DLL
或者包)时运行的。Delphi首先运行unit单位使用的所有单元的initialization部分,依次
执照它们出现的顺序,先是interface中的单元,随后是implementation中的单元。单元的初
始化部分在Delphi运行守所有使用 到的单元的初始化部分之后运行 。
Delphi跟踪记录了哪个单元已经被初始化了,这样一个单元的initialization部分就不会运行
多次。

另:
可以使用begin关键字来代替initialization,但如果这样的话,该单元就不能有finalization
部分。
 
谢谢各位,有点分了,等我重新开贴,欢迎继续指导,谢谢
 
谢谢大家,分太少了,抱歉
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
751
SUNSTONE的Delphi笔记
S
S
回复
0
查看
758
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部