Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [C++] Update db mysql

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    1

    [C++] Update db mysql

    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

  2. #2
    Hai sbagliato, il tag non è CODICE, ma CODE

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.