Reputation: 1382
Pretty straightforward question. I'm building an app which reads data from a SQL Server 2005 instance. I wanted to run some tests on my laptop (which does not have SQL 2005) so I was looking at swapping in a local database for the purpose of the tests.
I'm using VS2008 so the Compact Edition DB seemed a natural choice. I had hoped to just swap out my connection string, but it seems It will only let me connect to the CE database using the SqlCeConnection and not SqlConnection. Any way around this, modifiers I can use in the connection string perhaps?
Upvotes: 10
Views: 6535
Reputation: 15055
Yes you can use SQL Compact and/or SQL Server by referring to the base classes instead. For example:
IDbConnection Connection;
if (Compact)
Connection = new SqlCeConnection();
else
Connection = new SqlConnection();
The connection string needs to point at your data file for SQL Compact, for example: "Data Source=urData.sdf;Persist Security Info=False;"
. More examples here.
This link will explain what differences there are between SQL Server and SQL Compact, as it's not identical.
Upvotes: 6
Reputation: 103750
All of the SQL related objects you need for either DB inherit from the base abstract Db... (ie DbConnection, DbDataAdapter etc...). You can therefore write some kind of DatabaseManager class that when instantiated needs to know if you're dealing with Sql or Sql Ce. Then, from that point forward you deal just with the base class objects (DbConnection etc..). That way, all you need to change every time, is that instantiation of your manager class.
Another plus to doing it this way, is if you later decide to switch to another provider altogether, not much code needs to change.
Upvotes: 2
Reputation: 115799
It's actually very possible to user SQL CE instead of full-blown SQL Server by only modifying configuration parameters: change connection string and use IDbXXX
family interfaces wherever possible instead of platform-specific SqlXXX
and SqlCeXXX
ones. See DbProviderFactories.
Be advised, however, of differences in SQL dialects of these two platforms.
Upvotes: 8