|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: May 2006
Messaggi: 13
|
[C++] Problema aggiornamento database 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=MyFilmDB;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::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,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] Spero sia stato chiaro. Se c'è qualche problema con la sintassi da usare nel forum che non ho rispettato vi chiedo scusa e chiederei al moderatore di non chiudermi la discussione, ma dirmi solamente dove ho sbagliato così che in futuro non commetta più errori. Sapete aiutarmi? Grazie Ultima modifica di Safhkit : 18-09-2008 alle 15:36. Motivo: precisazione ambiente di sviluppo |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: May 2006
Messaggi: 13
|
Nessuno sa dove sta l'inghippo??
Aiuto!! |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 316
|
il problema (stranamente) potrebbe risiedere nei parametri.
Cioè mi spiego meglio buttandola lì: proprio oggi stavo facendo un applicazione c# che si connette ad un db mysql tramite ADO.NET (http://dev.mysql.com/downloads/connector/net/5.2.html), ovvero nel tuo stesso modo, ho notato che utilizzando i parametri, la query di inserimento che facevo inseriva esclusivamente valori nulli al posto dei valori dei parametri, anche se ho verificato che questi venivano effettivamente inizializzati. Non so sinceramente se ci sia un nesso tra i due casi.. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:47.



















