|
Hi!
I have tried to find a simple way to manipulate a database (in MS Access or MS SQL Server). However, I've not succeeded. I've tried SELECT statements with CRecordset and it works. But it seems like only SELECT statements work. This is what I've tried:
CDaoDatabase* m_pDB;
CDaoRecordset* m_pRS;
m_pDB = new CDaoDatabase;
m_pRS = new CDaoRecordset(m_pDB);
try {
m_pDB->Open("c:\\accessdb\\db1.mdb");
// CString strQuery = _T("SELECT * FROM Table1"); //Works just fine...
CString strQuery = _T("INSERT INTO Table1 VALUES ('3', 'Olga')"); //Doesn't work
m_pRS->Open(dbOpenDynaset, strQuery);
} catch (CDaoException* e) {
AfxMessageBox(e->m_pErrorInfo->m_strDescription);
e->Delete();
}
So how do you add data to a table, modify tables and so on?
Cheers,
Joachim
|
|
|
|
|
im assuming the 3 in ur insert statement goes into a numeric field in the database table ... if so lose the '' around it ... u only have to quote text fields (and prolly date fields sometimes)
"even if my world is weird its my world" biz stuff about me
|
|
|
|
|
|
ok well i use odbc for db stuff but it would seem to me that opening a dynaset on an insert statement wouldnt make sense ... u need to simple execute the statement against the db so prolly look for an .execute type command
"even if my world is weird its my world" biz stuff about me
|
|
|
|
|
ok thanks, but it need more specific ideas... i'm not that experienced with using vc++ to work with databases
|
|
|
|
|
Do you really need to use DAO. ADO is a lot easier. Check out this link for some good examples.
http://www.codeproject.com/database/#ADO[^]
Michael
Wonder Woman, Wonder Woman.
All the world's waiting for you,
and the power you possess.
In your satin tights,
Fighting for your rights
And the old Red, White and Blue.
|
|
|
|
|
JockeP wrote:
("INSERT INTO Table1 VALUES ('3', 'Olga')");
INSERT INTO Table1 (Field1, Field2) VALUES VALUES ('3', 'Olga')");
where field1 and field2 are obviously part of your table
(you didnt tell us the structure of your table)
Bryce
|
|
|
|
|
Pls Using:
CDaoDatabase::Execute
Learning and Working
|
|
|
|
|
Hi,
it simply doesn't work... I'm right?
Imagine somthing like this.........
template <class T> class CDialogView : public CDialog
{
} It will all compile fine until compiler hits the MFC message macros. At BEGIN_MESSAGE_MAP macro the template specification for the class causes the compiler to fail. A CDialog without message handlers makes no sense, that's why you can't simple skip the message macros. *sigh*
I had a look on Google's Usenet archive and found no solution.
|
|
|
|
|
Check Yury Golstman's article Colored/Blinking Controls and Dialogs with any Font[^]. He features a most interesting technique to implement message maps for template class (view TemplDef.h in the source code).
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
|
|
|
|
|
Joaquín M López Muñoz wrote:
interesting technique to implement message maps for template class (view TemplDef.h in the source code)
looks very promising, thanks for the good help Joaquín!
|
|
|
|
|
Hi guys?
is it true that OpenGL is better than DirectX ?
-=Ehsan-de-Burge=-
|
|
|
|
|
-=Ehsan-de-Burge=- wrote:
is it true that OpenGL is better than DirectX ?
no
Moak (who is actually using OpenGL because he likes it more)
|
|
|
|
|
-=Ehsan-de-Burge=- wrote:
is it true that OpenGL is better than DirectX ?
That is an all too common question, that almost as often isn't qualified with "for this particular area" with an explanation of the area, making a "correct" answer impossible.
As a general 3D visualization API, OpenGL is most certainly better than DirectX. Actually, it's the only 3D visualization API widely recognized, and if you in any way or form would like to run your application on anything but Windows (including Wine) OpenGL is again the only recognised API.
If you on the other hand are prepared to limit your application to Windows only, and it seems you are prepared to do just that, DX is currently with the ATI 9700 a little ahead of OpenGL in terms of features - you can use more whistle and bells on todays highest-end PC consumer 3D card, the 9700 (Pro). But if you were interested in those "features" you'd already be knowing them, not having to ask this question.
For a more thorough examination, may I suggest you search the "advanced" forum over at opengl.org? There was a thread (a rather long thread, some months ago IIRC) a developer basically started with "This is it. I'm going DX". At the end of the thread he wrote something to the effect "OK, I'm convinced. Maybe DX wasn't such a great idea after all. OpenGL it still is for me".
But it still boils down to: What are you going to use it for, and are you prepared to pay the price if you go with DirectX?
|
|
|
|
|
Hi, everyone!
What is the difference between %ld and %d? In most cases,
they are the same. Who can give me an example in which the
two output formats act differectly?
Thanks in advance,
George
|
|
|
|
|
Back in the old WIN16 days, an int was 16 bits and a long was 32 bits. %d was for ints and %ld was for longs. These days, it makes no difference.
Tim Smith
I'm going to patent thought. I have yet to see any prior art.
|
|
|
|
|
Thanks, Tim buddies!
Your reply helps a lot.
Best regards,
George
|
|
|
|
|
<purist_anal_retentive_viewpoint>
The "%d" format is for printing variables of type int . The "%ld" format is for printing variables of type long int . For the Win32 versions of Visual C++ (4.0 and greater), int 's and long int 's are both 32 bits. It's better 'form' to not rely on their being the same size.
</purist_anal_retentive_viewpoint>
Software Zen: delete this;
|
|
|
|
|
Gary,
I love how you always break things down to their bare essentials and lay out the basics. Good info, and always a nice thing to know, as always.
- Nitron
"Those that say a task is impossible shouldn't interrupt the ones who are doing it." - Chinese Proverb
|
|
|
|
|
Thanks !
Software Zen: delete this;
|
|
|
|
|
Hi, everyone! Please look at the following piece of codes,
--------
template<class t="">
const T* binary_search (T* first, T* last, const T& value) {
const T* lo = array, *hi = array + n, *mid;
while(lo != hi) {
mid = lo + (hi - lo) / 2;
if (value == *mid) return mid;
if (value < *mid) hi = mid; else lo = mid + 1;
}
return last;
}
--------
My puzzle arises from the third parameter of the function,
--------
const T& value
--------
Since there is a const before the variable "value", so the value of
variable "value" can not be changed. But there is also a & before
variable "value", I think it is useless. Because value of
variable "value" can not be changed. (So, a reference type is no use.)
In my mind, a reference type is useful only when its value can be changed.
Am I correct?
What are your options?
Thanks in advance,
George
|
|
|
|
|
George2 wrote:
In my mind, a reference type is useful only when its value can be changed.
Am I correct?
For performance reasons, passing a reference is better since the passed object is not copy-constructed on the stack.
The combination of const and & is good, and reflects the will to produce robust code, ie the compiler will either warn or simply not compile if the API you expose is badly used by your clients.
The side effect of this is that MS changed APIs in MFC7/ATL7 and added const in some places, causing older code to either warn or not compile anymore.
|
|
|
|
|
Hi, .S.Rod. buddies!
I do not understand what means
"the compiler will either warn or simply not compile if the API you expose is badly used by your clients"
in your reply?
Can you give me an explanation? (Better with an example.)
Thanks in advance,
George
|
|
|
|
|
Let's see an example where the compiler won't compile because of the combination of const and & :
Assume that we have an array :
class CArray
{
...
CString GetAt(long i);
};
We can use the GetAt(i) method in our code :
p.DoIt( myarray.GetAt(i) );
where DoIt is declared as : BOOL DoIt(CString &szString);
Now, our array is made more robust and we don't want its content to be changed by calling routines :
class CArray
{
...
const CString &GetAt(long i);
};
The consequence of that is the p.DoIt( myarray.GetAt(i) ); call does not compile anymore, since it's not "legal" to pass a const CString& as if it was a simple CString&.
|
|
|
|
|
Hi, .S.Rod. buddies!
In your reply, you mentioned,
--------
The side effect of this is that MS changed APIs in MFC7/ATL7 and added const in some places, causing older code to either warn or not compile anymore.
--------
when you are talking about the side effect, do you mean older functions without const keyword will not compile? If I am not correct, please show
me the correct explanation.
Thanks in advance,
George
|
|
|
|