怎样在vc中实现,连接数据库后不断开?(使用ADO,数据库为SQL Server)
类似pb那样,每次连接到数据库后,Sql server中就存在一个连接,
直到程序退出是或手动断开时才断开?
(ado中connection open以后,如果你执行一个sql语句,他是现连到数据库,然后执行
sql语句,然后断开连接,不知道这种机制有什么好处?)
类似pb那样,每次连接到数据库后,Sql server中就存在一个连接,
直到程序退出是或手动断开时才断开?
(ado中connection open以后,如果你执行一个sql语句,他是现连到数据库,然后执行
sql语句,然后断开连接,不知道这种机制有什么好处?)
程序中所有的数据库操作都用它就可以了。
比如:recordset->open(sql,conn,……)
这样就可以用一个连接做所有的事情了呀。
而recordset是可以随时关闭的。在操作之前还要确认它已经关闭。
可以使用函数:isstateclosed(好像是这个,可以查查)检查该recordset的状态
在CONNCTION的作用域中你自己不断开太,它怎么会断呢?通常情况下你打开一个CONNECTION可以反复执行多个操作,比如SQL语句.超出作用域你可以把_CONNECTIONPTR作为参数传递到别的函数域.当然你可以建立全局的,看你的需求和开发环境了.
static TCHAR sqlFA[] = _T("\
SHAPE {SELECT * FROM FA ORDER BY ID } APPEND \
({SELECT * FROM Bus WHERE FAID=? ORDER BY ID} RELATE ID TO PARAMETER 0) AS Bus, \
({SELECT * FROM Link WHERE FAID=? ORDER BY ID} RELATE ID TO PARAMETER 0) AS Link, \
({SELECT * FROM CompInstance WHERE FAID=? ORDER BY ID} RELATE ID TO PARAMETER 0) AS Comp"); if (!rsFA.IsOpen())
_HR(rsFA.Open(sqlFA, &GetGraphicsDatabase(), adCmdText)); return rsFA;这段代码在程序开始调用,以后就对这个记录集操作(记录集在内存中,所以速度比较快,为了保持全局唯一,所以使用了static),最后程序结束时关闭记录集这是我们老大的做法,是不是符合你的要求?