C# + WPF + SQL na Windows 7

0

Szanowni koledzy,

Na podstawie książki Visual Studio 2013 stawiam pierwsze kroki w świecie C#.
Programuję w Visual Studio 2013 Express (Win. 8 64 bit pro).

Utworzyłem prostą aplikację umożliwiającą prezentację w dataGrid bazy danych SQL i jej edycję.
Program przetestowałem i działa zgodnie z moimi oczekiwaniami jednak tylko na komputerze na którym go utworzyłem.
Mogę przenieść katalog Debug z skompilowanym programem w dowolne miejsce i działa (baza danych znajduje się w tym katalogu).

Problem pojawia się gdy chcę uruchomić program na Windows 7 64 bit Pro. Po otwarciu okna z tabelą dataGrid wyświetla się sama tabela bez żadnych danych (przykładowe elementy, które powinny być wyświetlone są zapisane w pliku bazy danych dołączonym do aplikacji).

Poniżej zamieszczam zawartość pliku App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
  </configSections>
  <connectionStrings>
    <add name="SparePartList.Properties.Settings.MainDatabaseConnectionString"
      connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\MainDatabase.mdf;Integrated Security=True"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

Komputer z win 7 posiada zainstalowanego najnowszego .NET framework 4.5. Nie ma na nim natomiast zainstalowanego Visual Studio.

Proszę o wszelkie wskazówki gdzie może tkwić problem.
W razie jakichkolwiek niejasności proszę pisać.

Krzysztof

1

A czy źródło danych 'LocalDB' jest na tym innym komputerze zdefiniowane w np. ODBC? Może to ten problem.

2

Nie jestem pewien, ale LocalDB chyba wymagało, aby było zainstalowane na komputerze.
https://msdn.microsoft.com/en-us/evalcenter/dn434042.aspx

0

Dziękuję za sugestie.

Zainstalowałem na PC z Win 7 SQL Server Express 2014 oraz "dodatek" LocalDB. Następnie porównałem ustawienia w programie SQL Server Configuration Mannager na PC z Win 8 i Win 7. Po instalacji w/w narzędzi na obu komputerach ustawienia w SQL Server Configuration Mannager są takie same.

Programy pobrane z strony:
http://www.microsoft.com/en-us/download/details.aspx?id=42299
(pliki: Express 32BIT\SQLEXPR_x86_ENU.exe, LocalDB 32BIT\SqlLocalDB.msi)
Testy wykonałem na Win 7 32 bit z zainstalowanymi wszystkimi aktualizacjami systemu.

Niestety na Win 7 program ciągle nie może połączyć się z bazą danych SQL...

Ps. Niestety nie rozumiem o co chodzi z:

-A czy źródło danych 'LocalDB' jest na tym innym komputerze zdefiniowane w np. ODBC?

Edit
Sprawdziłem ustawienia ODBC w systemie Win 8 (na którym mój program działa) i nie ma tam zdefiniowanego żadnego źródła danych...

1

A może problemem jest nieprawidłowe ustawienie DataDirectory:

Idąc za: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/dc31ea59-5718-49b6-9f1f-7039da425296/where-is-datadirectory-?forum=sqlce

|DataDirectory| (enclosed in pipe symbols) is a substitution string that indicates the path to the database. It eliminates the need to hard-code the full path which leads to several problems as the full path to the database could be serialized in different places. DataDirectory also makes it easy to share a project and also to deploy an application.
 
For example, instead of having the following connection string:
"Data Source= c:\program files\MyApp\Mydb.sdf"
 
Using DataDirectory, you can have the following connection string:
“Data Source = |DataDirectory|\Mydb.sdf”
 
To set the DataDirectory property, call the AppDomain.SetData method. If you do not set the DataDirectory property, the following default rules will be applied to access the database folder:
•	For applications that are put in a folder on the user's computer, the database folder uses the application folder.
•	For applications that are running under ClickOnce, the database folder uses the specific data folder that is created.

Spróbuj skompilować program z ustawioną ścieżką do bazy na sztywno. Ale tak żeby ta ścieżka nie była długa. Wrzuć bazę np. to C:\baza\MainDatabase.mdf na obu komputerach.

0

Witam,

Zgodnie u udzielonymi poradami po zainstalowaniu SQL Experss 2014 wraz z LocalDB oraz dodaniu do konfiguracji ODBC serwera SQL udało mi się uruchomić aplikację.
Oczywiście jak to w życiu bywa od razu mam kolejny kłopot. Aplikację testowałem na dwóch komputerach z Win 7. Na jednym działa na drugim po otwarciu okna z dataGrid program zawiesza się i po kilkudziesięciu sekundach system zgłasza komunikat o awarii programu .... :-(

Spróbuję dodać maksymalną ilość instrukcji try .. catch do problematycznego okna i ustalić przyczynę awarii.

Na chwilę obecną dziękuję za cenne wskazówki, w szczególności za tą o ODBC.

Pozdrawiam,
Krzysztof

Edit.

Problemy z pracą aplikacji na drugim PC z win. 7 występowały ponieważ zainstalowałem na nim SQL Express 2014 po obniżeniu wersji na 2012 aplikacja połączyła się z serwerem. Oczywiście konieczna była konfiguracja ODBC.

Pozdrawiam,

1 użytkowników online, w tym zalogowanych: 0, gości: 1