Your connection string is fine but in C# '\' is a special character when used inside string literals so hav to explicitly tel C# that are using special characters literally. So ther two ways to solve your problem
1. Using the escape character- declare your string variable like this
string conString = @".\SQLEXPRESS;AttachDbFilename=|DataDirectory|\shop.mdf;Integrated Security=True;User Instance=True";
2. Use the connectionstring stored in the app.config xml file
This is a much more portable way and less messy as you dont hav to deal with escape characters of any kind but make sure app.config was generated (it usually does when u add a database to the project) and then call it lyk this
string conStr = Properties.Settings.Default.ShopConnectionString;
and thats it