PDA

Visualizza la versione completa : [C++] Update db mysql


safhkit
19-09-2008, 19:34
Salve,

premetto che il db mysql che sto usando ha sempre funzionato, nel senso che, dall'applicazione c++ (Visual Studio 2005) che sto creando, riesco a recuperarne i dati, ad inserirne di nuovi, eliminarli ed aggiornarli. Inizialmente i comandi SQL li creavo "a mano", cioè passo passo con la concatenazione delle varie stringhe che componevano il comando, inserendo i valori provenienti da textbox ecc.
Ho notato però che questo modo di operare crea problemi quando bisogna inserire stringhe contenenti apici ( ' ). Infatti i comandi SQL creati a mano fanno confusione pensando che questi siano i delimitatori dei valori stringa delle colonne della tabella del db.
Ho risolto tale problema con l'uso dei parametri.

A questo punto, però, ecco che il mio db non viene più aggiornato.
Vi posto il codice:



DataSet^ ds = gcnew DataSet();
MySqlConnection^ myconn = gcnew MySqlConnection("Server=Localhost;database=MyFilmDB;uid=root;pwd=ro ot");
myconn->Open();
MySqlDataAdapter^ da = gcnew MySqlDataAdapter("SELECT * FROM Films",myconn);
da->Fill(ds,"Films");


da->UpdateCommand = gcnew MySqlCommand("UPDATE Films SET Titolo=@Titolo, Genere=@Genere, Supporto=@Supporto, Anno=@Anno, Attori=@Attori, Trama=@Trama WHERE Codice=@Codice",myconn);
da->UpdateCommand->CommandType = System::Data::CommandType::Text;

da->UpdateCommand->Parameters->Add(gcnew MySqlParameter("@Titolo",MySql::Data::MySqlClient::MySqlDbType::VarChar,45 ));
da->UpdateCommand->Parameters["@Titolo"]->Value=txtTitle->Text;
da->UpdateCommand->Parameters->Add(gcnew MySqlParameter("@Genere",MySql::Data::MySqlClient::MySqlDbType::VarChar,45 ));
da->UpdateCommand->Parameters["@Genere"]->Value=cmbGenere->Text;
da->UpdateCommand->Parameters->Add(gcnew MySqlParameter("@Supporto",MySql::Data::MySqlClient::MySqlDbType::VarChar,45 ));
da->UpdateCommand->Parameters["@Supporto"]->Value=cmbSupporto->Text;
da->UpdateCommand->Parameters->Add(gcnew MySqlParameter("@Anno",MySql::Data::MySqlClient::MySqlDbType::VarChar,45 ));
da->UpdateCommand->Parameters["@Anno"]->Value=txtYear->Text;
da->UpdateCommand->Parameters->Add(gcnew MySqlParameter("@Attori",MySql::Data::MySqlClient::MySqlDbType::Int32));
da->UpdateCommand->Parameters["@Attori"]->Value=txtAttori->Text;
da->UpdateCommand->Parameters->Add(gcnew MySqlParameter("@Trama",MySql::Data::MySqlClient::MySqlDbType::VarChar,60 0));
da->UpdateCommand->Parameters["@Trama"]->Value=txtTrama->Text;
da->UpdateCommand->Parameters->Add(gcnew MySqlParameter("@Codice",MySql::Data::MySqlClient::MySqlDbType::Int32));
da->UpdateCommand->Parameters["@Codice"]->Value=Convert::ToString(cod);

da->AcceptChangesDuringUpdate = true;
MySqlTransaction^ mytrans = myconn->BeginTransaction();
da->UpdateCommand->Transaction=mytrans;
da->UpdateCommand->ExecuteNonQuery();
mytrans->Commit();
myconn->Close();


Qualcuno sa dirmi cosa sbaglio?

Grazie

menphisx
19-09-2008, 21:47
Hai sbagliato, il tag non è CODICE, ma CODE :stordita:

Loading