/*---------------------------------------------------------------------------*/ void wxSQLHistory::SetResultSet(wxSQLite3ResultSet& resultSet) { wxColour oddColour(wxGetApp().GetParamStr(PARAM_ODDROWCOLOR)); wxGridSQLite3Table* table = new wxGridSQLite3Table(&resultSet); table->SetAttrProvider(new OddRowsGridCellAttrProvider(oddColour)); m_HistoryGrid->SetTable((wxGridTableBase*)table, true); table->AdaptColumnsSize(); m_HistoryGrid->SetSelectionMode(wxGrid::wxGridSelectRows); m_HistoryGrid->SetDefaultColSize(50); m_HistoryGrid->SetDefaultRowSize(50); m_HistoryGrid->SetColLabelSize(25); m_HistoryGrid->SetRowLabelSize(0); m_HistoryGrid->SetColSize(0, 75); m_HistoryGrid->SetColSize(1, 430); m_HistoryGrid->SetColSize(2, 50); m_HistoryGrid->SetDefaultSelection(); m_HistoryGrid->ForceRefresh(); resultSet.Finalize(); }
/*---------------------------------------------------------------------------*/ void wxSQLBook::ExecQuery(const wxString& sql, bool explain, bool history) { try { try { if (m_db->GetAutoCommit() && m_AutoTransact) { m_db->ExecuteUpdate(("BEGIN TRANSACTION;")); m_LogResult->AppendText(_("Started transaction.\n")); } } catch(wxSQLite3Exception& ex) { m_LogResult->AppendText(wxString::Format(_("Error %i-%i : %s\n"), ex.GetErrorCode(), ex.GetExtendedErrorCode(), ex.GetMessage().c_str())); ShowLog(); } int countrows = 0; m_Hook->Clear(); wxSQLite3ResultSet resultSet; wxSQLite3Statement statement = m_db->PrepareStatement(sql); if (statement.GetParamCount()) { wxString param, value; int count = statement.GetParamCount(); wxSQLParametersDialog paramsdlg(this); for (int i = 0; i < count; i++) { param = statement.GetParamName(i + 1); value = wxGetApp().GetSQLParameter(param); paramsdlg.AddParameter(param, value); } if (paramsdlg.ShowModal() == wxID_OK) { for (int i = 0; i < count; i++) { param = statement.GetParamName(i + 1); value = paramsdlg.GetParameter(i); wxGetApp().SetSQLParameter(param, value); statement.Bind(i + 1, value); } } else { statement.Finalize(); return; } resultSet = statement.ExecuteQuery(); } else resultSet = m_db->ExecuteQuery(ToUTF8(sql)); DisplayHookValues(); countrows = resultSet.GetColumnCount(); wxSpecGrid* grid; if (explain) grid = m_Explain; else grid = m_DataResult; if (countrows) { grid->SetTable(&g_EmptyTable); grid->ForceRefresh(); wxGridSQLite3Table* table = new wxGridSQLite3Table(&resultSet); wxColour oddColour(wxGetApp().GetParamStr(PARAM_ODDROWCOLOR)); table->SetAttrProvider(new OddRowsGridCellAttrProvider(oddColour)); grid->SetTable((wxGridTableBase*)table, true); table->AdaptColumnsSize(); grid->SetDefaultSelection(); //grid->SetSelectionMode(wxGrid::wxGridSelectRows); grid->ForceRefresh(); if (explain) ShowExplain(); else ShowData(); } else if (m_Hook->GetNbRowDeleted() || m_Hook->GetNbRowInserted() || m_Hook->GetNbRowUpdated()) ShowLog(); resultSet.Finalize(); statement.Finalize(); if (history) wxGetApp().AddHistory(sql); } catch(wxSQLite3Exception& ex) { m_LogResult->AppendText(wxString::Format(_("Error %i in : \n%s\n%i : %s\n"), ex.GetErrorCode(), sql.c_str(), ex.GetExtendedErrorCode(), ex.GetMessage().c_str())); ShowLog(); } }
/*---------------------------------------------------------------------------*/ void wxTableBook::RefreshStruct() { if (!m_db || m_DbObjectName.IsEmpty()) return; // Remplir les wxGrid avec les paramètres de la table wxSQLitePlusFrame* frame; wxString sql, basename; wxSQLite3ResultSet resultSet; wxGridSQLite3TableBase* table; wxColour oddColour(wxGetApp().GetParamStr(PARAM_ODDROWCOLOR)); if (m_Base != wxEmptyString) basename = m_Base; else basename = ("main"); try { // remplissage de la grille des colonnes m_PageColumns->SetTable(&g_EmptyTable); m_PageColumns->ForceRefresh(); table = new wxGridTblColumnsTable(m_db, m_DbObjectName, basename); table->SetAttrProvider(new OddRowsGridCellAttrProvider(oddColour)); m_PageColumns->SetTable((wxGridTableBase*)table, true); table->AdaptColumnsSize(); m_PageColumns->SetRowLabelSize(0); m_PageColumns->SetDefaultSelection(); m_PageColumns-> ForceRefresh(); } catch(wxSQLite3Exception& ex) { wxGetApp().ShowError("RefreshStruct", ex); } try { // remplissage de la grille des clés étrangères sql = wxString::Format("PRAGMA '%s'.foreign_key_list(\"%s\");", basename.c_str(), m_DbObjectName.c_str()); resultSet = m_db->ExecuteQuery(ToUTF8(sql)); m_PageForeignKey->SetTable(&g_EmptyTable); m_PageForeignKey->ForceRefresh(); table = new wxGridSQLite3Table(&resultSet); table->SetAttrProvider(new OddRowsGridCellAttrProvider(oddColour)); m_PageForeignKey->SetTable((wxGridTableBase*)table, true); table->AdaptColumnsSize(); m_PageForeignKey->SetRowLabelSize(0); m_PageForeignKey->SetDefaultSelection(); m_PageForeignKey-> ForceRefresh(); resultSet.Finalize(); } catch(wxSQLite3Exception& ex) { wxGetApp().ShowError("RefreshStruct", ex); } try { // remplissage de la grille des triggers m_PageTriggers->SetTable(&g_EmptyTable); m_PageTriggers->ForceRefresh(); table = new wxGridTriggerTable(m_db, m_DbObjectName, basename); table->SetAttrProvider(new OddRowsGridCellAttrProvider(oddColour)); m_PageTriggers->SetTable((wxGridTableBase*)table, true); table->AdaptColumnsSize(); m_PageTriggers->SetRowLabelSize(0); m_PageTriggers->SetDefaultSelection(); m_PageTriggers-> ForceRefresh(); } catch(wxSQLite3Exception& ex) { wxGetApp().ShowError("RefreshStruct", ex); } try { // remplissage de la grille des indexes m_PageIndexes->SetTable(&g_EmptyTable); m_PageIndexes->ForceRefresh(); table = new wxGridTblIndexesTable(m_db, m_DbObjectName, basename); table->SetAttrProvider(new OddRowsGridCellAttrProvider(oddColour)); m_PageIndexes->SetTable((wxGridTableBase*)table, true); table->AdaptColumnsSize(); m_PageIndexes->SetRowLabelSize(0); m_PageIndexes->SetDefaultSelection(); m_PageIndexes-> ForceRefresh(); } catch(wxSQLite3Exception& ex) { wxGetApp().ShowError("RefreshStruct", ex); } frame = (wxSQLitePlusFrame*)wxGetApp().GetTopWindow(); m_PageDdl->SetValue(frame->GetDbObjectDDL(otTable, m_DbObjectName, basename)); }