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:
[codice]
DataSet^ ds = gcnew DataSet();
MySqlConnection^ myconn = gcnew MySqlConnection("Server=Localhost;database=MyFilmD B;uid=root;pwd=root");
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::MySqlClien t::MySqlDbType::VarChar,45));
da->UpdateCommand->Parameters["@Supporto"]->Value=cmbSupporto->Text;
da->UpdateCommand->Parameters->Add(gcnew MySqlParameter("@Anno",MySql::Data::MySqlClient::M ySqlDbType::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,600));
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();
[/codice]
Qualcuno sa dirmi cosa sbaglio?
Grazie