/// <summary> /// Runs a sql query and returns results as requested type /// </summary> /// <param name="cmd">VerticaCommand to run</param> /// <param name="timeout">Query timeout</param> /// <returns>DataTable object representing the result</returns> internal DataTable SqlQuery(VerticaCommand cmd, int?timeout = null) { int commandTimeout = timeout ?? Config.QueryTimeout; string connStr = buildConnString(); using (VerticaConnection conn = new VerticaConnection(connStr)) { conn.Open(); cmd.Connection = conn; cmd.CommandTimeout = commandTimeout; LogCommand(cmd); DataSet ds = new DataSet(); VerticaDataAdapter da = new VerticaDataAdapter(cmd); //this is where the query is run da.Fill(ds); //return the result, which is the first DataTable in the DataSet return(ds.Tables[0]); } }
public DataTable GetDataTable(string query, Dictionary <string, object> parameters = null) { DataTable dataTable = new DataTable(); if (!IsConnectionOpened()) { return(dataTable); } try { using (VerticaCommand command = new VerticaCommand(query, connection)) { if (parameters != null && parameters.Count > 0) { foreach (KeyValuePair <string, object> parameter in parameters) { command.Parameters.Add(new VerticaParameter(parameter.Key, parameter.Value)); } } using (VerticaDataAdapter fbDataAdapter = new VerticaDataAdapter(command)) fbDataAdapter.Fill(dataTable); } } catch (Exception e) { string subject = "Ошибка выполнения запроса к БД"; string body = e.Message + Environment.NewLine + e.StackTrace; SystemMail.SendMail(subject, body, Properties.Settings.Default.MailCopy); Logging.ToLog(subject + " " + body); connection.Close(); if (bw != null) { bw.ReportProgress(0, subject + " " + body); } } return(dataTable); }