简体   繁体   中英

Connection string with an SQL Server CE database

I'm trying to establish a connection with a database in a Windows CE 5.0 application and I'm using the Compact Framework 2.0

The database is located inside the project's folder:

C:\Documents and Settings\softdil\My Documents\Visual Studio 2008\Projects\Datalogic\Datalogic

These are the lines I'm using in order to connect and open the database:

SqlCeConnection conn = new SqlCeConnection();
conn.ConnectionString = "Data Source = Datalogic.sdf;";
conn.Open();

Which gives me a beautiful "database file not found" error message.

I also tried with the absolute uri with same results:

conn.ConnectionString = "Data Source = C:\\Documents and Settings\\softdil\\My Documents\\Visual Studio 2008\\Projects\\Datalogic\\Datalogic;";

What am I doing wrong here?

May be it has something to do with the aplication being debugged (executed) in the mobile device?

I don't really think so because the database works when the application is loaded, meaning that is associated with a listbox and loads data correctly from the database.

In a Win CE application we use the following to get the full path of the executing file:

string StartupPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);

Using StartupPath you can then add your database name to that path and add it to the connection string:

string datalogicFilePath = Path.Combine(StartupPath, "Datalogic.sdf");
string connectionString = string.Format("DataSource={0}", datalogicFilePath);

You will have to make it work for WinCE, I don't think you have a C:\\Documents and Settings\\ on your target.

I don't really think so because the database works when...

Look in your App.Config, maybe you already have a connectionstring?

Here is how I fixed it, in case anyone happens to get the same problem.

When you execute an application in visual studio into a Windows CE terminal device, the application is copied there and also the database. So the connection string must use an uri related to the terminal and not relative to a path in your computer.

Give Path of DB File in Data Source property and add providerName in App.Config file

<add name="Keyname" connectionString="Data Source=DBPath\Database1.sdf" providerName="Microsoft.SqlServerCe.Client.3.5" />

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM