|
Strangely enough, I had the same problem a while ago. A colleague of mine
had a similar problem a couple of years before that. Since we both work in
C/C++ I don't know if this will help or not:
My first attempt was like this:
bar::foo() {
ADO_DB db;
ADO_RS rs;
db.Open();
...
db.Close();
}
This leaked badly. The next attempt was:
bar::foo() {
ADO_DB* db = new ADO_DB;
ADO_RS* rs = new ADO_RS;
db->Open();
...
db->Close();
delete db;
}
This leaked less, I don't know why, but still it leaked.
My working code looks like this:
class bar {
ADO_DB* mdb;
}
bar::bar() {
mdb = new ADO_DB;
}
bar::foo() {
ADO_RS* rs = new ADO_RS;
db->Open();
...
db->Close();
}
Class 'bar' is instantiated once and remains active for the life of
my program. In this final form, I can open and close the database as
often as I like. The leak as near as I can tell occurs deep within ADO.
I'm not sure about the Public declaration in VB, but it seems your
code snippet is very close to my 'working' solution. Does your variable
gobjOraConnection exist for the duration of the program's execution?
>>>-----> MikeO
|
|
|
|
|
yes, gobjOraConnection exists for the whole life of my application. There's another things I noticed: If i close the connection, the memory needed doubles from 3.5mb to 7mb and then slowly comes down again. Strange ...
|
|
|
|
|
Instead of this:
>Public gobjOraConnection As New ADODB.Connection
>Public gobjOraCommand As New ADODB.Command
Try this:
Public gobjOraConnection As ADODB.Connection
Public gobjOraCommand As ADODB.Command
set gobjOraConnection = new ADODB.Connection
set gobjOraCommand = new ADODB.Command
Late binding is supposed to help conserve memory. The theory goes that Your program doesn’t have to check to see if you made an instance to your object every time you make a call to it.
Throwing in a few set = nothings never hurts.
set gobjOraCommand = nothing
set gobjOraConnection = nothing
Good luck!
|
|
|
|
|
We are using ADO(in a C++ env.)
to connect to diffent databases just
by replacing the provider string.
What we noticed is that the ADO/OleDB Provider for
JetEngine (4.0 and 3.51) (Access) is very, very slow.
We compared with the the ADO/OleDB Provider for
MS-SQL and we found a factor 60 !!!.
We tried with old DAO MFC - Classes with
Access-databases and the factor was 100 faster
than with ADO/OleDB with JetEngine.
Just using plain OleDB didnt make things much faster.
Do someone know more about slowliness of OleDB for
Jetengine? Are there alternative OleDB drivers
that are faster?
zack
|
|
|
|
|
Try to use client cursors instead of the default serverside cursors if the .mdb file is on your local pc:
_RecordsetPtr pSet(__uuidof(Recordset));
pSet->CursorLocation = adUseClient;
pSet->Open(...);
|
|
|
|
|
Hi everyone
I'm not sure if this is possible, but I was wondering if there was a way for two threads to concurrently (and reasonably independently) share an SQL Server connection, such as the OLE DB templates CDataSource object? Presently, my attempts have been serialised internally by SQL Server, so that the net effect is that one of the requests must complete before the other can begin...
thanks to anyone who can offer some pointers!
nb
|
|
|
|
|
One possible way of implementing this is to use ADO and ADO Events.
Basically you execute a SQl statement and once the statement has been executed, you will recieve an EVENT that the execution has completed. This will allow you to run your second sql statement. knowing the first one has finished.
see the following for example
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/ado270/htm/mdevteventmodelxvc.asp
|
|
|
|
|
thanks Rashid, I'll give it a shot.
|
|
|
|
|
Is there appropriate way to get active row handle from ADO recordset object(_Recordset) while it's operating in filter mode or append mode .?
|
|
|
|
|
I have developed some sql queries in MS SQL Server using left outer joins but the same queries does not work in access because the odbc driver does not support it. Please can anybody suggest me a workaround
|
|
|
|
|
Are you sure it is the left outer joins causing the problem? I have used left outer joins in ASP pages accessing an Access database via odbc. Why not post the query.
Adam
-------
Like you will ever visit my sites...
www.ufowatch.com - Seen a UFO then report it here or view over 500 different reports.
www.clubpages.co.uk - Taking the Bournemouth club scene through the millenium
|
|
|
|
|
Reason is that you are using ado to connect to access while i am using plain odbc.
|
|
|
|
|
Has anybody used MySQL via MFC? If so please point my in the right direction. Example code / db would be very useful..
"Life begins at 140"
|
|
|
|
|
hilo, i'm a newbie at VB.NET... and i've wrote in VB.NET
i've been trying examples from reference books and online reference... but it seems that i either got the syntax wrong or just could not get it right, i think that i have something somewhere wrong with the Join table part. as i have to use 3 different tables to get the result.
anyone, pls help out... thank you! veri veri much!
my syntax are as follows...
'''''''''''''''''''''''''''''''''''''''''''''''''''
Dim objDataSet As New DataSet("ValidReasonList")
Dim cnn As SqlConnection
Dim cmd As SqlDataAdapter
Dim sql As String
Dim tblValidReasons As New DataTable("ValidReasons")
cnn = New SqlConnection("server=(local); database=sas2000; Integrated Security=SSPI")
sql = "SELECT A.APPROVED, B.ADMNO, B.DATEFROM, B.DATETO, B.REASON_DESC, C.REASONTYPE_NAME"
sql = sql & "FROM ABSENCE A, ABS_REASON B, ABS_REASON_TYPE C"
sql = sql & "WHERE A.REASON_ID = B.REASON_ID AND B.REASONTYPE_ID = C.REASONTYPE_ID"
sql = sql & "ORDER BY B.ADMNO"
cmd = New SqlDataAdapter(sql, cnn)
cmd.Fill(objDataSet, "JoinTable")
dgValidReasons.DataSource = objDataSet.Tables("JoinTable").DefaultView
dgValidReasons.DataBind()
''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
|
|
|
Hi
I have Access Database.
How to set property of TextField - <strong>"Allow Zero Lenght"</strong> using only <strong>SqlAPI</strong>?
Thanks,
iLYA
http://www.terra-informatica.org/ilya/prnsniff.htm
|
|
|
|
|
Hello,
I am new to database programming (actually, I am not started yet).
I am recording some data in real-time (voice). Now I need to allow the user for searching for some data given a specific time.
I was told that I should consider using SQL, or DAO or ODBC.
I have no clue what the best thing to use is. So I am looking for some information.
Any suggestion (books, articles, code, ... ) will be largely appreciated.
Thanks a lot.
Where there is a WISH, there is a WILL.
|
|
|
|
|
I have a database created in SQL Server 7 SP3 that I want to convert to Access 2000. Is there a utility that I can use to do this or will I have to do it manually?
I have been retrenched from my job so have no access to SQL Server any more. The database is a personal one I created for myself.
Michael Martin
Australia
mmartin@netspace.net.au
"Don't belong. Never join. Think for yourself. Peace"
- Victor Stone
|
|
|
|
|
I do not know of any tool that can do this, and I doubt a comprehensive one exists since access does not support triggers or stored procedures. If your database uses triggers or stored procedures, you are probably out of luck on the conversion front.
On the other hand, MSDE is included with Office 2000 professional, and Visual Studio and can be used redistributed freely. It does not include the management tools (Enterprise manager, query analyzer), but there are some free ones available (I don't have a link handy, but I will look around and if I find some, will post them for you.)
|
|
|
|
|
Matt
thanks for the help. I don't have any triggers or stored procedures. I have MSDE but since I don't need the complexity of SQL Server I thought I would go to Access 2000.
Anyone else know of a tool I can use to convert?
Michael Martin
Australia
mmartin@netspace.net.au
"Don't belong. Never join. Think for yourself. Peace"
- Victor Stone
|
|
|
|
|
Use the Export (DTS) functionality on Enterprise Manager.
This works perfectly.
|
|
|
|
|
1. I have one Access .mdb file. How to read the names of the tables in it, using ADO
2. In the same database, how to read the description field of each column, using ADO again
Any answer will be helpfull. Thanx in advance!!!
|
|
|
|
|
See sample here
http://www.codeproject.com/database/isqlado.asp
This has the source code that you require
|
|
|
|
|
In VB for a data source named MYDB,
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim i As Long, j As Long
cnn.Open "MYDB"
Set rs = cnn.OpenSchema(adSchemaTables)
Debug.Print "Number of Records ", rs.RecordCount
Debug.Print "No of Fields : ", rs.Fields.Count
For j = 0 To rs.Fields.Count - 1
Debug.Print rs.Fields(j).Name & " ";
Next j
Debug.Print
For i = 0 To rs.RecordCount - 1
For j = 0 To rs.Fields.Count - 1
Debug.Print rs.Fields(j).Value & " ",
Next j
Debug.Print
rs.MoveNext
Next i
rs.Close
cnn.Close
This should enumerate what tables the database contains. Its a bit like opening a recordset of what tables exist. Tables in tables......
Hope this helps.
Giles
|
|
|
|
|
I recently did this in VC++. If that is your language, let me know and I will post an answer.
|
|
|
|
|
How can I export database from SQL to Interbase?
|
|
|
|