Connecting to SQL CE db using SQLConnection

a 夏天 提交于 2019-12-12 08:36:36

问题


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?


回答1:


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.




回答2:


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.




回答3:


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.



来源:https://stackoverflow.com/questions/793128/connecting-to-sql-ce-db-using-sqlconnection

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!