You could store the values in the database as a VARCHAR, then you will keep your formatting. However, this solution will probably come back and bite in the rear later on.
For example, what if you want to change to 5 or 6 digits?
You are confusing how values are stored with how values are presented on the screen for a user.
It is not a problem to use the datatype INT and store values like 1, 2, 3 etc.
The thing is how you present the value to a user. In this case you format the value to always show for digits left padded with zeros.
value = 1;
Console.WriteLine(value.ToString("0000"));
or
Console.WriteLine(String.Format("{0:0000}", value));
Both versions will result in the output '0001'
And in the future if you like to change from 4 to 5 digits you don't have to bother the data layer, just the presentation layer.
See
Custom Numeric Format Strings[
^] for more information.