nie działa ExecuteNonQuery() dla SqlServerCe

0

Witam

Nie mogę się uporać z niedziałającą funkcją ExecuteNonQuery() dla SqlServerCe co dziwne nie jest zwracany żaden błąd, kod sql wykonuje się poprawnie bezpośrednio w bazie danych a aplikacja zachowuje się tak jakby wykonała wszystko poprawnie ale zmian w DB NIE MA. Zamieszczam poniżej część kodu:

        private void createConnectionString()
        {
            connectionString = new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName + "\\dataBase\\DBAleWet.sdf; File Mode = Exclusive; Persist Security Info=False; password = maciek";
        }

        private void connectDB()
        {
            createConnectionString();
            sqlConn = new SqlCeConnection("datasource=" + connectionString);
        }

        public void sendNonQuery(string _sqlCommand)
        {
            sqlConn.Open();
            SqlCeCommand command = sqlConn.CreateCommand();
            try
            {
                command.CommandType = CommandType.Text;
                command.CommandText = _sqlCommand;

                command.ExecuteNonQuery();
            }
            catch(SqlCeException ex)
            {
                error = true;
                lastError = ex.ToString();
            }
            sqlConn.Close();
        }

Zapytania Select wykonują się bez problemu.

0
.....
int ra = command.ExecuteNonQuery(); 
....

Po zapytaniu ra = .... ?

0

ra = 1;

1
prezes873 napisał(a):

ra = 1;

No to w takim razie masz "jeden row affected", czyli działa. Po tym poleceniu, w ramach tego połączenia, odczytaj to, co zmieniłeś (select), i zobacz, czy jest zmienione. Jeśli tak, a nie widzisz zmiany w bazie, to znaczy, że polecenie się wykonało w ramach wyizolowanej transakcji. Inne przyczyny takiego stanu rzeczy nie przychodzą mi do głowy.

0

Zgadza się podczas select zwrócił dane już zmienione ale po zamknięciu aplikacji baza wraca do poprzedniego stanu jaka jest możliwość rozwiązania tego problemu?

0

zakomitować zmiany

0

w jaki sposób mam zatwierdzać te zmiany skoro nie używam transact-sql

0

Pewnie głupie pytanie, ale co mi tam - czy polecenie sql zakończone jest średnikiem, czy nie?

0

tak

1

A w ogóle to czemu to jest CE? Czy to dla urządzeń mobilnych jakichś coś tworzysz? Może wtedy baza uruchamia się w jakimś emulatorze po skopiowaniu czy coś? Tak tylko głośno myślę, by na trop naprowadzić jakis...

... a może piszę bzdury jakieś - jeśli tak, to przepraszam :)

0

nie to nie jest aplikacja dla urządzenia mobilnego ale tworzę lokalną bazę danych .sdf i chyba ta biblioteka jest dla niej właściwa aczkolwiek może tu być problem bo wcześniej połączenie było z sql serverem i tam wszystko działało jak trzeba.

0

teraz się wszystko zgadza aczkolwiek praca w ten sposób jest dość uciążliwa bo każde otwarcie bazy danych w VS powoduje zmianę daty jego edycji i nadpisuje poprzednią wersję.

Wielkie dzięki za pomoc.

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