SQLite w C++/CLI

0

Witajcie,
Czy mógłbym uzyskać od kogoś pomoc z bazami danych?
Chciałbym napisać program z obsógą bazy danych .NET framwerok, która się zwie ODBC.
Mam problem już z tymi ODBC conectorami i commadami... Wymagają aby baza danych już istniała, ae jak mam się dostać do tego serwera? Pracuję też na webserw, ale tam mam dostęp przez PHPMyAdmin i to jest dziecinnie proste. Ale czy istnieje taki PHPMyAdmin do frameworków?
Używam środowiska Visual Studio 2008 .NET, a piszę pod C++/CLI (jest, to .NET stąd wybrałem dział C# i .NET, nie wiem czy dobrze).
Może zakręciłem, ponieważ czytam te tutiorale, ale ich nie rozumiem, bo tam już mają bazę danych.
Prosiłbym o podpowiedź jak się dostać do tego ODBC "zewnętrznie" i zbudować bazę jak np. w PHPMyAdmin.

Przydałby się jakiś porządny tutek na te środowisko, nie tylko na "Hello World", jeśli już się zapoznam z .NET, to może sam napiszę:-) Na razie co krok mam problem...

Dziękuję wszystkim.

0

po piwersze ODBC to nie baza danych! to api do laczenia sie z serwerem bazy danych z kazdym, ktory obsluguje polaczenia odbc, phpMyAdmin to nic innego jak gui do MySQL
pytanie jakiego systemu bazodanowego uzywasz?
do stworzenia bazy mozesz uzyc CREATE DATABASE, mySql tez je obsluguje (szczegoly w dokumentacji)
zeby z poziomu php dzialac z baza takze musisz wykonac operacje polaczenia sie z baza, wykonanania zapytania, skonsumowania wynikow i posprzaania, czyli pozamykania odpowiednich readerow, polaczen

0

Dziękuję za odpowiedź. Właśnie coś mi nie pasowało z tą "bazą danych".
Mam od kupna laptopa wgrany MS Sql Serwer 2005, ale jakoś nie potrafię go skonfigurować(jak chce stworzyć usera, to mi pokazuje okno z userami z visty i nie można jeszcze ich wybrać).
Jak czytałem, to podobno w >NET framework jest jakiś system tylko trzeba wgrać Microsoft dbase driver.
Ale nie potrafię ich znaleźć, nie Microsoftu, reszta, to jakieś triale.
Znalazłem też jakieś HIS2004 serwer i HIS2004 client, na jakimś forum zalecali instalację, niestety pokazuje się, żę "nie odnaleziono serwera":-(
Nie wiem co mam robić...
Na jakimś forum że framwork'owe bazy są zapisywane w .dbf i nie ma problemu z przenośnością. Bardzo mi na tym zależy, ale w necie te porady mi tylko zamotały sprawę. Nie wiem już czego szukać.
W ODBC provider jak wybieram plik dBase, to mi pokazuje, ze nie mam sterowników:-(
Zależy mi bardzo na przenośności bazy, a MS Sql serwer chyba jej nie zapewnia? No, ale mi nie działa i nie mam prawie opcji takich jak w tutkach. Nie wiem gdzie znaleźć stery do tego .dbf. Udało mi sie tylko wgrać ODBC providera i jakieś MDAC się rozpakowuje, ale nic się dalej nie dzieje.

0

lol, nie wiem co czytasz, ale przestan ! :D
w .net frameworku sa tak zwane providery do polaczania z bazami danych wykorzystujace konkretne api. I tak z defaulta po instalacji .net masz odbc, ole db, ado .net
inni producenci (Oracle, mysql) tez dostarczaja dedykowane prowidery .net dla swoich baz, chciaz mozna do nich polaczyc sie uzywajac odbc lub ole, ale dedykowana sa z definicji wydajniejsze

Zależy mi bardzo na przenośności bazy, a MS Sql serwer chyba jej nie zapewnia?

Nie wiem co rozumiesz przez przenośne, jesli pomiedzy roznymi systemami baz danych to oczywiscie ze nie
ale twoja aplikacja moze polaczyc sie z dowolna baza ktora rozumie nie wazne czy bedziesz mial ja na serwerze X a pozniej przeniesiesz/utworzysz na serwerze Y - to tylko kwestia connection stringa do innego serwera/bazy

nie bede sie silil i robil wykladow, skoro masa jest w sieci, trzeba tylko wiedziec co poczytac
przejrzyj np. to:
http://www.microsoft.com/poland/developer/net/programowanie/dostep_do_baz.mspx
http://support.microsoft.com/kb/306636/pl

0

Dziękuję:-)
A czytałem wiele rzeczy. Artykuły na microsoft.com, codeguru, forum msdn i jakieś strony prywatne. Tylko wszystko dotyczyło trochę innych problemów, raczej z połączeniem z bazą, tlyko ja wywnioskowałem, że framework ma własne. Mam otwartych coś między 30-40 zakładek i już nawet nie mam siły szukać gdzie, to wyczytałem.
Teraz czytam o SQL LITE i takim fajnym programie do zarządzania tą bazą. Ciekawe czy uda mi się połączyć z tym za pomocą kodu, który mi dałeś.

A z przenośnością, to chodziło mi o, to że jak będe chciał przenieść program na inny kom, to nie będę musiał tam instalować np. MS SQL Serwer, czy Oracle, ale będe mieć plik w folderze z programem i z nim będzie się łączył program, SQL Lite niby , to zapewnia, tylko czy się z tym połączę... W końcu, tutaj serwerem jest plik, a nie proces działający w systemie, przynajmniej tak, to rozumiem.
Czeka mnie jeszcze dużo czasochłonnego szukania, jak to ogarnę, to napiszę tutka i zamieszczę na kilku forach. Denerwuje mnie, to już. Ile można szukać takich podstaw? I jeszcze nie wiem czego szukać, stąd Ty znalazłeś, to pewnie w kilka sekund, ja w 2 dni nie potrafiłem. Tylko jeszcze muszę sprawdzić czy, to działa.

Co wpisałeś w google/microsoft.com, że to znalazłeś?

P.S. Jeszcze raz dzięki, nigdzie indziej nie chcieli mi pomagać.

0

Udało się!:-)
Trochę się męczyłem z tym SQLite, ale doszedłem co i jak. Jutro, albo w nocy napiszę tutka. Ale bez fachowego nazewnictwa, bo nie znam.

I z ominięciem tych wszystkich konfliktowych OODBC, OleDB coś tam itp.
Chociaż ciekawi mnie, jakbym chciał przenieść z programem bazę z MS SQL Serwer. Przecież np. takie gry, niektóre wykorzystują bazy danych, ale nie trzeba nic instalować. Jak, to oni robią?

0

Obiecałem tutek do SQLite i C++/CLI:
I. Na początek najlepiej ściągnąć jakiegoś admia do tej bazy danych, polecam SQLite Administrator:
http://sqliteadmin.orbmu2k.de/
ale są też inne.
Jeśli nie znamy SQL, to nie trzeba się martwić, jest też tryb graficzny.
Tworzymy nową bazę(Baza danych->Nowa), nadajemy jej nazwę "base" i wklejamy w zakładce "Zapytanie SQL" poniższy kod:

CREATE TABLE [table1] (
[col1] TEXT  NULL,
[col2] TEXT  NULL
);
INSERT INTO table1 ( col1, col2 ) VALUES ( "Teks w kolumnie 1.", "Teks w kolumnie 2." );

II. Mamy bazę, więc przechodzimy do C++/CLI:
Musimy zainstalować tzw. prowider do SQLite. Dobrze, że znalazł się, ktoś kto tak pięknie, to zrobił.
Pobieramy ADO.NET 2.0 Provider for SQLite:
http://sourceforge.net/projects/sqlite-dotnet2/
Z instalacją nie powinniśmy mieć problemu, wykrywa naszego Visual'a samodzielnie(jak się zatnie przy wyborze, trzeba poczekać).

Tworzymy nowy projekt Windows Form Application.

Teraz skopiujemy naszą bazę do folderu z projektem. Domyślny folder na projekty jest w "Moje Dokumenty/Visual Studio 2008\Projects" wchodzimy w folder z nazwą projektu, tam będzie kolejny folder o tej samej nazwie, wchodzimy do niego i kopiujemy tam bazę.

Musimy dodać referencję do klasy obsługującej bazę SQLite. Wchodzimy w:
"Project->'nazwa_projektu' properties->Common Properties->Framework and References" po prawej stronie klikamy "Add New Reference" i wybieramy z listy "System.Data.SQLite".
Przechodzimy do kodu i na początku po dodawanych "namespace" dodajemy do SQLite:
using namespace

using namespace System::Data::SQLite;

III. Tworzymy 4 Buttony i DataGridView.

  1. Wyświetlanie danych - button1
    W designerze klikamy 2x na button1, aby przejść do jego zdarzenia Click. Wklejamy tam poniższy kod:
SQLiteConnection ^conn = gcnew SQLiteConnection("Data Source = base.s3db;");  // Tworzymy nowe połączenie z bazą, base.s3db, to nasza baza danych
SQLiteDataAdapter ^adapter = gcnew SQLiteDataAdapter("SELECT * FROM table1;",conn); // Tworzymy adapter i zapytanie wybierające wszystkie elementy z tabeli "tabela1"
DataTable ^table = gcnew DataTable(); // Bardzo pomocny obiekt do pracy na wynikach zapytania
adapter->Fill(table); // wypełniamy DataTabla danymi z wyniku zapytania
dataGridView1->DataSource = table; // Przypisujemy dane z DataTabla do naszego GridView

Możemy skompilować projekt, wcisnąć buttona i cieszyć się z wyświetlonych danych w DataGridView.

2. Dodawanie danych(INSERT INTO) - button2
W designerze klikamy 2x na button2, aby przejść do jego zdarzenia Click. Wklejamy tam poniższy kod:

SQLiteConnection ^conn = gcnew SQLiteConnection("Data Source = base.s3db;");  // Tworzymy nowe połączenie z bazą, base.s3db, to nasza baza danych
SQLiteCommand ^command = gcnew SQLiteCommand(conn); // Tworzymy nowe zapytanie
DateTime ^time = gcnew DateTime(); // Tworzymy nową datę
			 
conn->Open(); // Otwiarcie połączenia
command->CommandText = "INSERT INTO table1 (col1, col2) Values( 'Data i czas dodania:"+time->Now.Now.ToString()+"' , 'Data i czas dodania:"+time->Now.Now.ToString()+"' );"; // Treść zapytania
command->ExecuteNonQuery(); // Wykonanie zapytania
conn->Close(); // Zamyknięcie połączenia

button1_Click(this, e); // Wywołujemy kliknięcie button1 aby zaktualizowało nam GridView

3. Zmiana danych(UPDATE) - button3
W designerze klikamy 2x na button3, aby przejść do jego zdarzenia Click. Wklejamy tam poniższy kod:

SQLiteConnection ^conn = gcnew SQLiteConnection("Data Source = base.s3db;");  // Tworzymy nowe połączenie z bazą, base.s3db, to nasza baza danych
SQLiteCommand ^command = gcnew SQLiteCommand(conn); // Tworzymy nowe zapytanie
DateTime ^time = gcnew DateTime(); // Tworzymy nową datę
			 
conn->Open(); // Otwiarcie połączenia
command->CommandText = "UPDATE table1 SET col1 = '1. Zmieniono: "+time->Now.Now.ToString()+"',col2 = '2. Zmieniono: "+time->Now.Now.ToString()+"' WHERE rowid = ( SELECT min(rowid) FROM table1 );"; // Treść zapytania, zmienia nam pierwszy wiersz, dodaje aktualny czas i datę do kolumny
command->ExecuteNonQuery(); // Wykonanie zapytania
conn->Close(); // Zamyknięcie połączenia

button1_Click(this, e); // Wywołujemy kliknięcie button1 aby zaktualizowało nam GridView

4. Usuwanie danych(DELETE) - button4
W designerze klikamy 2x na button4, aby przejść do jego zdarzenia Click. Wklejamy tam poniższy kod:

SQLiteConnection ^conn = gcnew SQLiteConnection("Data Source = base.s3db;");  // Tworzymy nowe połączenie z bazą, base.s3db, to nasza baza danych
SQLiteCommand ^command = gcnew SQLiteCommand(conn); // Tworzymy nowe zapytanie
			 
conn->Open(); // Otwiarcie połączenia
command->CommandText = "DELETE FROM table1 Where rowid = ( SELECT min(rowid) FROM table1 );"; // Treść zapytania, usuwamy 1 rekord w tabeli
command->ExecuteNonQuery(); // Wykonanie zapytania
conn->Close(); // Zamyknięcie połączenia

button1_Click(this, e); // Wywołujemy kliknięcie button1 aby zaktualizowało nam GridView

Buttona ten usuwa pierwszy rekord w tabeli.

<font size="2">Jeśli ktoś ma uwagi, to może pisać, temat w obserwowanych.
Pozdrawiam,
Arrowman

P.S. Jeśli ktoś chce cały kod albo projekt w zip, to na pw, albo mail. Nie chcę tutaj śmiecić i nie mam hostingu.
</span>

<font size="2">Jest już artykuł. Można pobrać tam projekt.</span>

1

Ja mam uwagę. Nie jest to może jakiś olbrzymi artykuł, ale szkoda żeby się zgubił w nawale postów. Może akurat komuś pomoże.

Jesteś zarejestrowany, więc proponuję żebyś go wrzucił jako artykuł do serwisu. Np. pod adresem http://4programmers.net/C_sharp/Bazy_danych_w_.NET, ale możesz wybrać inny, jak wolisz.

0
massther napisał(a)

masz tu jakies providery do sqlite
http://sourceforge.net/projects/adodotnetsqlite/
http://www.devart.com/dotconnect/sqlite/

Już wcześniej znalazłem, ten co podałem w poprzednim poście. Ten Twój jest z tego, co widzę w wersji na x64(pierwszy link). Może się przydać komuś.

Dziękuję za okazaną pomoc.

MSM napisał(a)

Ja mam uwagę. Nie jest to może jakiś olbrzymi artykuł, ale szkoda żeby się zgubił w nawale postów. Może akurat komuś pomoże.

Proponuję żebyś go wrzucił jako artykuł do serwisu. Proponuję np. pod adresem http://4programmers.net/C_sharp/Bazy_danych_w_.NET, ale możesz wybrać inny jeśli wolisz.

Ok, ale zmienię temat, bo to w końcu tylko o SQLite. Już napisałem też do Moda, żeby zmienił tytuł wątku.

Dzięki za radę, nie wiedziałem, że tutaj są jakieś artykuły. Muszę je przejrzeć:-)

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