Pobieranie elementu z bazy danych MSVC++

0

Ostatnio piszę program(nie musicie wiedzieć jaki do rozwiązania) problem polega na tym, że potrzebuje pobrać jeden element z bazy danych, kod powinien wyjaśnić o co chodzi dokładniej, i zapisać go do stringa. Jako, że w bazach danych nie orientuje się za dobrze, a używam ich aby kod programu zajmował mniej miejsca(mogę po prostu zastosować instrukcję if dla każdego elementu), dlatego proszę o pomoc. Kod programu wygląda tak:

SqlConnection^ sql = gcnew SqlConnection("server=(local)\\SQLEXPRESS;trusted_connection=true;database=Database");
SqlCommand^ select = gcnew SqlCommand("SELECT Code FROM Items WHERE Name=@Item", sql);
String^ kod;
// W tym miejscu nie wiem co miałbym zrobić aby wartość kolumny Code przypisać do stringa kod.
 

Dodam jeszcze, że program tworzony jest jako CLR Windows Forms Aplication.

0

Może jestem ciołek, ale dopiero zaczynam z bazami danych w połączeniu z c++, analizując kod wiem już jak pobrać daną z bazy danych i ją przypisać do zmiennej ale nadal nie wiem jak przerobić ten kod aby stosował zewnętrzny parametr. W SQL już trochę się orientuję więc wiem jak napisać odpowiednią komendę co zademonstrowałem wyżej:

SELECT Code FROM Items WHERE Name=@Name

Ale w dalszym ciągu nie wiem jak pod to @name podstawić np zawartość textBoxa i zapisać pobraną wartosć do zmiennej.

0

Pisane z pamięci, więc jakieś literówki mogą się pojawić:

IDbDataParameter^ param = select->CreateParameter();
param.DbType = ... //typ danych w bazie
param.ParameterName = "@Item" //jego nazwa
param.Value = ... //jego wartość
select->AddParameter(param);
0

Dzięki, pomogłeś chociaż znalazłem również coś takiego:

select->Parameters->AddWithValue("@Item", txtItems->Text); 

Nie wiem czy jest to dobry sposób ale zajmuje mniej miejsca. Pozostała jeszcze kwestia jak ten wybrany element przypisać do stringa.

0

Doszedłem już do czegoś takiego:

 
             SqlConnection^ sql = gcnew SqlConnection("server=(local)\\SQLEXPRESS;trusted_connection=true;database=Database");
             SqlCommand^ select = gcnew SqlCommand("SELECT Code FROM Items WHERE Name=@Item", sql);
             String^ kod;
             SqlDataReader^ myReader;
             select->Parameters->Clear();
             select->Parameters->AddWithValue("@Item", txtItems->Text);
             try
             {
                 sql->Open();
             }
             catch(Exception^ e)
             {
                 Console::WriteLine(e->Message);
             }
             myReader = select->ExecuteReader();
             while (myReader->Read())
             {
                 kod = myReader->GetString();
             }
             myReader->Close();

I teraz wyświetla mi błąd podczas kompilacji:

 
Error    1    error C2661: 'System::Data::Common::DbDataReader::GetString' : no overloaded function takes 0 arguments    c:\users\manveru\desktop\nowy folder (4)\program\program\Form1.h    516    1    Program

Proszę o pomoc.

0

No przecież Ci wyraźnie pisze, że nie ma funkcji GetString, która przyjmuje 0 argumentów.
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getstring.aspx

kod = myReader->GetString(0);
//lub
kod = myReader->GetString(myReader->GetOrdinal("Code"));
0

Wielkie dzięki za pomoc.

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