Monday, October 5, 2009

VC++ in VS 2008 - Part 2- Adding a cpp file having code

After my first small "class A" program in VS 2008, I moved forward to add the same code in a separate file and to access/call that class object in my main program file. I want to mention that I have added a new cpp file by right clicking on the solution and then Add -> New Item -> C++ file(.cpp). I have given my newly added cpp file as "A.cpp".

Therefore I have(1) "VCApp.cpp" having "main" function. (2) "A.cpp" is new file name where I want to add my class A. And then I want to access that class in my main function.

Following is my defination of class "A" which I want to put in "A.cpp"

public class A{
public:
A()
{
Console::WriteLine("Inside A constructor.");
};
};

and I access the class A in my main function as following way ,


int main(array ^args)
{
A* o = new A();
return 0;
}

I put above code and while building, found following compile time error(s),
----------------------------------------------------------------------------------
fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?
error C2065: 'A' : undeclared identifier
error C2065: 'o' : undeclared identifier
error C2061: syntax error : identifier 'A'
----------------------------------------------------------------------------------
To get around of this error (1) Add the following line in A.cpp at the top of it.
#include "stdafx.h"

(2) Add the following line to the top of "VCApp.cpp" file,
#include "A.cpp" ---- adding this line helps compiler to refer defination class A to find in "A.cpp" file.

Now if I compile the code then there is no compile time error and I got following out put in my console output,

Inside A constructor.
Press any key to continue . . .

Happy coding !!!

Exploring VC++ in Visual Studio 2008

Last couple of day I had been thinking of doing some hands on C++. So I have my VS 2008 editor and I leaverage the facilities out of it and started my C++ coding ( After many a years ... possibly after graduation days !!!)

I created a new Project from File->New ->Project -> CLR Console Application then I gave a name "VCApp".

In the project solution I can see that "VCApp.cpp" is the file where I can add my code/any custom written class.

When I have added a custom class named "A". Following is my code for my custom class,


public class A
{
public:
A()
{
Console::WriteLine("Inside A constructor.");
}
}

Though above is a very simple code snippet I was surprised to see following compile time errors
---------------------------------------------------------------------------------------
error C2628: 'A' followed by 'int' is illegal (did you forget a ';'?)
error C3874: return type of 'main' should be 'int' instead of 'A'
error C2664: 'A::A(const A &)' : cannot convert parameter 1 from 'int' to 'const A &'
---------------------------------------------------------------------------------------
I just did a quick inspection in my code then then found that code needs the scope termination operator ";" in proper places. So I modified as following ,

public class A{
public:
A()
{
Console::WriteLine("Inside A constructor.");
};
} ;

Just added a semicolon (1) while closing at end of constructor and (2) End of class and I found the build was succeeded.

Wednesday, August 19, 2009

The value violated the integrity constraints for the column.


I was trying to import data from one database server table to another database server table when I was getting this error message

SQL SSIS data import wizard error: "
The value violated the integrity constraints for the column.".(SQL Server Import and Export Wizard)"


After several times of troubleshooting to fix the problem and to import data successfuly I have noticed that there one was column in the source table which marked as "NULL" but the same colun in destination table was marked as "NOT NULL". Which caused the error.


Therefore what was happning ,some null value was getting inserted in NOT NULL column which SSIS does not allow and throws an exception saying integrity constraint would be violated.