您好,请教几个问题。望各位赐教1. 数据库相关,游标在数据库有哪些用途? 也就是说,在哪些情况下会想到使用游标 ?
游标 在功能上可否用 Delphi中的
while not ADOQuery1.eof do
begin
......
next;
end;
这种结构来替换? 还有,游标说到底是不是一个指针?2.在 Sql Server 2000中,可不可以在一个语句中用到2个或者多个数据库? 如:
两个库db1,db2, 现在取db1中的表soucetable1中的字段 k1 存入 db2中的表
targettable1 ?该怎样写 ? 我用 数据库.数据表 不行3. TADOQuery .create(nil/self) 中, nil/self 指什么,它与具体创建的对象有何关系?4. COM 到底为何物? 一种接口特殊的组件? COM就是接口? COM是一个DLL或者可执行文件?
COM 有何用途? 谢谢.
游标 在功能上可否用 Delphi中的
while not ADOQuery1.eof do
begin
......
next;
end;
这种结构来替换? 还有,游标说到底是不是一个指针?2.在 Sql Server 2000中,可不可以在一个语句中用到2个或者多个数据库? 如:
两个库db1,db2, 现在取db1中的表soucetable1中的字段 k1 存入 db2中的表
targettable1 ?该怎样写 ? 我用 数据库.数据表 不行3. TADOQuery .create(nil/self) 中, nil/self 指什么,它与具体创建的对象有何关系?4. COM 到底为何物? 一种接口特殊的组件? COM就是接口? COM是一个DLL或者可执行文件?
COM 有何用途? 谢谢.
2.我没用过SQL SERVER,不过我认为可以,要授权。
3.create(nil/self)是指的owner,也就是这个控件的拥有者。
4.com 是component object model 组件对象模型,是ole 和activex的基础,com有很多接口,用户可以通过接口来使用com,所谓的接口只不过是开发者做的一些属性,方法,就象你用vcl控件,不必理会里面怎么做的,他主要用于跨语言,跨平台的之间的通信
while not ADOQuery1.eof do
begin
......
next;
end;
替代? 您对我说的游标可以理解为指针有异议吗?
2. DatabaseName.TableName的写法不行,我试过,也许有别的写法
3."所有者" 是哪种意义上的所有? 只有“if Ower Distory then Distory it “的含义吗?
4.对,COM我依然没有一个明晰的概念,一本书和一本书的说法不同...... 望继续指导
游标跟指针不一样,但有些数据库书中也把游标叫做指针,但跟pointer是完全不一样的。
2。你有没有在数据库中对这个表的SELELCT权限授给另一个database,只有授权后才可以写为DatabaseName.TableName.
3.所有者是if Ower Distory then Distory it
如果你定义为create(nil/self),在使用完后,你要自己负责释放。
4。看一下<<delphi com开发>>这本书吧
程序里的指针虽然两者的本质不同,但在功能上是相同的,都是用来定位操作,虽然一个是地址,一个是索引号; 您认为呢?您指的“完全不同“是什么含义? 能否讲一下,谢谢 链接多个库可以用以下写法: DatabaseName.dbo.TableName ,加上所有者。 这个问题就算过去了:0 create(nil/self),在使用完后,你要自己负责释放。----当Ower为 nil时要自己手动释放,为Self也要手动释放吗? 应该不是,对马? 请您勘误 这一段以来,自认为看了不少关于COM和COM+的资料,但说法很多,我觉得对于接口应该有一个一致的定义,也许我的理解不对;还是请您勘误:),请大家指正 谢谢
2。DatabaseName.dbo.TableName ,用这种写法是连接了多个库,不应该算是多个用户。
3。create(nil/self)是拷的你的,应该是create(nil)要自己手动释放,self不用。
4。COM接口包含的函数和过程用来操纵一个COM组件,但不同的COM组件函数过程是不一样的。接口分为两部分,接口定义部分和接口实现部分。就象函数,他也有函数定义部分,实现部分。
引用开发人员指南的一句话,接口定义了一个对象的函数怎样在内存中布置的标准,是不是很笼统。有些东西理解他的意思,用法就可以了.
能否就第二个问题
“2。DatabaseName.dbo.TableName ,用这种写法是连接了多个库,不应该算是多个用户。“ 我原来问的问题已经解决,现在你让我想到一个新问题: 多个用户
怎么控制? 我想只要改变 DatabaseName.dbo.TableName 中的dbo为需要的用户即可,您说呢?
4.就COM/COM+能否给我举例说明一下? 谢谢您
4。举个例子,那内容就多了,我如果简略的说也没什么意思,若详细的说那就是长篇大论了,网上有很多例子,你最好自己做一个,在做的过程中肯定会遇到问题,然后去查资料,慢慢的就会精通了。
我们有个程序,有多个模块组成,每个模块都为独立的EXE。进程间用WM_COPYDATA通信。
存在这样一个问题:一个模块在运行时总是出现:
“ [Microsoft][ODBC SQL Server Driver]连接占线导致另一个hstmt“
但程序并不会死掉,后来将这个模块与数据库采用ADO直接连接(指定数据库服务器、数据库)
避开ODBC,如上错误不再出现,但数据访问速度我觉得有点下降;但更不可思议的是:偶尔,
程序会出现逻辑错误,这种错误从来没有出现过,而且没有规律,也就是说,第一次出现后用相
同的条件测试跟踪但错误不可再现。我怀疑为ADO的问题,请您帮我分析一下原因,真的很蹊跷。 谢谢
这几个模块都是采用想同的方式和数据库链接,公用一个DSN通过
ODBC和数据库链接。 这个出问题的模块和别的模块的唯一区别就是 对数据库的存取很频繁;但我想着并不是问题的根源;我对数据库的操作都是用如下方式:procedure ExecSqls(ss:string);
begin
with TADOQuery.Create(nil) do
begin
try
begin
Connection:=TheConnection;
Sql.Text:=ss;
ExecSql;
end;
finally
Free;
end;
end;
end;
这段代码我认为是安全的。 帮我分析一下,谢谢您
还有,3星到4星要多少分?:):)
2个三角 200
3个三角 500
4个三角 1000
5个三角 2000
一星 5000
再往上就要按名次来了
其实我也我真的不明白,为什么会是这样。
我们有个程序,有多个模块组成,每个模块都为独立的EXE。进程间用WM_COPYDATA通信。存在这样一个问题:一个模块在运行时总是出现:
“ [Microsoft][ODBC SQL Server Driver]连接占线导致另一个hstmt“
但程序并不会死掉,后来将这个模块与数据库采用ADO直接连接(指定数据库服务器、数据库)避开ODBC,如上错误不再出现,但数据访问速度我觉得有点下降;但更不可思议的是:偶尔,程序会出现逻辑错误,这种错误从来没有出现过,而且没有规律,也就是说,第一次出现后用相同的条件测试跟踪但错误不可再现。
我怀疑为ADO的问题,请您帮我分析一下原因,真的很蹊跷。 谢谢
还有,您能否看看这个贴子,COM与COM+我实在不明白,那么多说法...
http://expert.csdn.net/Expert/topic/1141/1141965.xml?temp=.1377375谢谢您----------------------------------------------------------让大家讨论吧~~ :)今天我没时间了,玩了很久了:)一下先
对这个问题的理解,我觉得是可以的。如果搂主用过PB的话就知道在PB中是用游标获取数据集,然后循环Fetch,就跟搂住说的一样。2.在 Sql Server 2000中,可不可以在一个语句中用到2个或者多个数据库? 如:
在Oracle里面,至少这样子查询是可以。但是注意不是两个数据库,而是两个不同的表空件。至于编辑的话,我没有做过。3. TADOQuery .create(nil/self) 中, nil/self 指什么,它与具体创建的对象有何关系?对于每一个从TComponent继承下来的空件,他都可以有一个拥有者,在拥有者被指定后,如果该用有着被释放,那么这个控间也会被释放。
如果你 ADOQ := TADOQuery.Create(Form1)。那么你就只要管理Form1的内存释放,不需要ADOQ.Free了。4. COM 到底为何物? 一种接口特殊的组件? COM就是接口? COM是一个DLL或者可执行文件?
COM 有何用途?
至于COM是什么。就我现在的了解的话。COM不是一种实物,而是一种标准。它规定了一些实现的标准。如果一个对象实现了 IUnKown,IQueyrIntface, AddRef那么我们可以认为这是一个COM了。也就是说我们平常说的COM就是符合COM规范的一些实现。
DLL,EXE, OCX都有可能实现对COM的支持。这些东西的话可是说一实现COM的一种具体方案。所以主要是看这些文件包含的东西是什么。如果它里面包含的东西是符合COM标准的。那么我们就可以称之为COM组件。
COM标准主要是想实现二进制级别的对象复用。COM标准是跨平台的。
Owner属性是指组件的所有者,它负责组件的创建和释放.系统默认窗体上的所有组件的Owner是窗体,而窗体的Owner是Application.
delphi中一般是在窗体类的作用范围内编程,因此,self指窗体,是一个隐含的对窗体的引用(很像C++中的this).如果超出了窗体类的作用范围,self就是其它的组件或类.
create(nil) 就是不给创建的对象指定Owner, 因此要自己动手Free.
create(self) 就是给创建的对象指定Owner,但不一定是一个窗体.可以不用管Free,
谢谢 case_sheng(宁静致远)先生对 Owner的精彩阐述,谢谢欢迎各位继续给出自己的见解 ,谢谢