private void ProceduresList_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (ProceduresList.SelectedItem != null) { string tableName = ProceduresList.SelectedItem.ToString(); try { string routineName = ProceduresList.SelectedItem.ToString().Substring(2); string query = "select p.parameter_name " + "from information_schema.routines r left join information_schema.parameters p on r.specific_schema = p.specific_schema and r.specific_name = p.specific_name " + "where r.routine_schema not in ('pg_catalog', 'information_schema') AND p.parameter_mode = 'IN' AND r.routine_name = \'" + routineName + "\' order by p.ordinal_position;"; dt = conn.execute(query); if (dt.Rows.Count == 0) { string prefix = ProceduresList.SelectedItem.ToString().Substring(0, 2); query = (prefix == "F_" ? "SELECT * FROM " : "CALL ") + routineName + "();"; Console.WriteLine(query); dt = conn.execute(query); DbGrid.ItemsSource = dt.DefaultView; selTableName = tableName; } else { List <string> headers = new List <string>(); for (int i = 0; i < dt.Rows.Count; ++i) { headers.Add(dt.Rows[i].Field <string>(0)); } ParametersWindow insert = new ParametersWindow(conn, dt, DbGrid, headers, ProceduresList.SelectedItem.ToString(), "ROUTINE"); insert.ShowDialog(); } } catch (Exception ex) { Console.WriteLine(ex); } } }
private void AddRecordBtn_Click(object sender, RoutedEventArgs e) { if (selTableName != null) { try { List <string> headers = new List <string>(); foreach (var column in DbGrid.Columns) { headers.Add(column.Header.ToString()); } ParametersWindow insert = new ParametersWindow(conn, dt, DbGrid, headers, selTableName, "INSERT"); insert.ShowDialog(); string query = "SELECT * FROM \"" + selTableName + "\""; dt = conn.execute(query); DbGrid.ItemsSource = dt.DefaultView; } catch (Exception ex) { MessageBox.Show("Ошибка при вставке!\n" + ex.Message, "Ошибка"); } } }