połączenie z bazą danych SQLCE

0

Witam
Chciałbym połączyć się z bazą danych w formacie SQLCE .(sdf), w celu zalogowania się. Wyskakuje mi błąd:
Unable to load DLL 'sqlceme30.dll': Nie można odnaleźć określonego modułu. (Exception from HRESULT: 0x8007007E)
w komędzie SQLCeConnection.


string connectionString = "Data Source=C:\\Users\\Kaczka\\Documents\\czsamocodowe.sdf;Persist Security Info=True; password=<Acde!@#Carrs>";
            SqlCeConnection polaczenie = new SqlCeConnection (connectionString);
            polaczenie.Open();
            string commandString = string.Format("SELECT * FROM uzutkownicy WHERE login = '{0}' AND haslo = '{1}'", tblogin.Text, tbhaslo.Text);
            SqlCeCommand cmd = new SqlCeCommand(commandString, polaczenie);

            SqlCeDataReader czytacz = cmd.ExecuteReader(CommandBehavior.CloseConnection);

            if (!czytacz.HasRows)
            {
                MessageBox.Show("Podałeś złe dane, spróbuj ponownie","Złe dane", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            switch (czytacz["poziomuprawnien"] as string)
            {
                case "Admin":
                    ShowNextWindow(new PanelAdmin(czytacz["nazwisko"] as string));
                    break;
                case "Uzytkownik":
                    ShowNextWindow(new czescisamochodowe(czytacz["nazwisko"] as string));
                    break;
               
                default:
                    MessageBox.Show("Nieznany poziom");
                    break;
            }
        }

Proszę o pomoc.

0

Nie wiem czy to jest to ale zmień opcje Any CPU na x86.

0

sqlceme30.dll - czy ten plik znajduje się w folderze projektu?

0

Nie, plik sqlceme30.dll jest tylko w programach x86

0

Z tego co pamietam (bo minelo kilka lat):
Albo dll musza byc przy exe, albo w systemwow64 czy tam system32. A jeżeli to nie wystarcza to tworzac instalatora (dla klienta np) można też dac wymaganie instalacji odpowiedniego mssql compact (można instalke mssql dolaczyc przy instalce "naszej apki").
To nie jest jakos mega duzo MB i nie zasmieca systemu.

P

Ps. Ważne aby wesje mssql ce sie zgadza (moga sie roznić podwersja i rewizja).
Nie jestem pewien (z racji upływu czasu), ale majac np v4 nie jest zgodna z v.35. Tzn nie sa kompatybilne wstecz jak ma czesto miejsce w bibliotekami.

0

przekopiowałem sqlceme30.dll do folderu gdzie jest .exe, i przeszło, ale pojawia się błąd Nieokreślony błąd. [ sqlceqp30.dll ] przy w linijce polaczenie.Open();

0

udało mi się obejść problem z plikami dll., wystarczyło przeinstalować Visual Studio 2010.
W tym czasie zmieniłem kod

SqlCeConnection polaczenie = new SqlCeConnection(conectionstring);
            polaczenie.Open();
            string commandString = string.Format("SELECT * FROM uzytkownicy WHERE login = '{0}' AND haslo = '{1}'", tblogin.Text, tbhaslo.Text);
            SqlCeCommand cmd = new SqlCeCommand(commandString, polaczenie);

            SqlCeDataReader czytacz = cmd.ExecuteResultSet(ResultSetOptions.Scrollable);

            if (!czytacz.HasRows)
            {
                MessageBox.Show("Podałeś złe dane, spróbuj ponownie", "Złe dane", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            switch (czytacz["poziomuprawnien"] as string)----> tu pojawia się błąd
            {
                case "Admin":
                    ShowNextWindow(new PanelAdmin(czytacz["imie"] as string));
                    break;
                case "Uzytkownik":
                    ShowNextWindow(new PanelUytkownik(czytacz["imie"] as string));
                    break;

                default:
                    MessageBox.Show("Nieznany poziom");
                    break;
            }

.```

Wyskakuje błąd "No data exists for the row/column" przecież mam w bazie kolumne o nazwie poziomuprawnien

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