Ho realizzato un programma in Visual C++ che dovrebbe inserire dei record all'interno di una tabella di un DB MySQL.
Però mi restituisce sempre questo messaggio:
"il set di record è di sola lettura"
Vi allego parte del codice:
CDBCod::CDBCod(CWnd * pParent)
{
m_pView=(CSlaveView *)pParent;
TRY
{
m_DBCod.Open("ODBC;DSN=SQLTr",FALSE,FALSE,"ODBC;", FALSE);
m_Campo=new SQLCod(&m_DBCod);
m_Campo->Open(CRecordset::snapshot);
m_bDBAperto=TRUE;
}
CATCH(CDBException, e)
{
m_pView->AggiungiAllarme(e->m_strError,0);
m_bDBAperto=FALSE;
}
END_CATCH
}
CDBCod::~CDBCod()
{
TRY
{
if (m_Campo->IsOpen())
m_Campo->Close();
m_DBCod.Close();
delete m_Campo;
}
CATCH(CDBException, e)
{
m_pView->AggiungiAllarme(e->m_strError,0);
}
END_CATCH
}
BOOL CDBCod::CreaCod(
CString cod1,
CString cod2,
CString cod3
)
{
struct Cod cod;
cod.cod1=cod1;
cod.cod2=cod2;
cod.cod3=cod3;
m_SecCritica.Lock();
BOOL Risultato = FALSE;
TRY
{
m_Campo->AddNew();
RiempiCampo(&cod);
m_Campo->Update();
Risultato = TRUE;
}
CATCH(CDBException, e)
{
m_pView->AggiungiAllarme(e->m_strError,0);
}
END_CATCH
m_SecCritica.Unlock();
return Risultato;
}
Io ho creato sul mio PC una istanza di MySQL con nome utente ("utente") e password ("pass"), mi collego al DB di MySQL utilizzando ODBC
e la proprietà CRecordset.
Al momento della connessione non ottengo alcun errore e il server di MySQL è già avviato.
Dove sbaglio? E' giusto utilizzare il comando AddNew per inserire i record, credo di si visto che è una funzione di CRecordset? Forse da
qualche parte devo settare le proprietà di lettura/scrittura del DB, ma dove? Sotto windows (XP) la cartella che contiene le tabelle del DB hanno già il
permesso in scrittura.
Aggiungo che se mi connetto a DB di Access tutto funziona correttamente. Perchè?