/// <summary> /// Handle a sql string and check it with the engine /// </summary> /// <param name="actual">SQL string</param> /// <returns>true, if the query defined in parameter is syntatically correct else false</returns> protected bool doMatch(IDbCommand actual) { parserResult= GetEngine(actual).Parse(); return parserResult.IsSuccesful; }
public virtual ParserResult Parse() { ParserResult res=null; using(var conn = new OleDbConnection(command.Connection.ConnectionString)) { var fullSql = string.Format(@"SET FMTONLY ON {0} SET FMTONLY OFF", command.CommandText); conn.Open(); using (var cmdIn = new OleDbCommand(fullSql, conn)) { try { cmdIn.ExecuteNonQuery(); res = ParserResult.NoParsingError(); } catch (OleDbException ex) { res = new ParserResult(ex.Message.Split(new string[] { "\r\n" }, System.StringSplitOptions.RemoveEmptyEntries)); } } if (conn.State != System.Data.ConnectionState.Closed) conn.Close(); } return res; }
public virtual ParserResult Parse() { Trace.WriteLineIf(NBiTraceSwitch.TraceVerbose, command.CommandText); foreach (AdomdParameter param in command.Parameters) Trace.WriteLineIf(NBiTraceSwitch.TraceVerbose, string.Format("{0} => {1}", param.ParameterName, param.Value)); ParserResult res = null; using (var connection = new AdomdConnection()) { var connectionString = command.Connection.ConnectionString; try { connection.ConnectionString = connectionString; connection.Open(); } catch (ArgumentException ex) { throw new ConnectionException(ex, connectionString); } using (AdomdCommand cmdIn = new AdomdCommand(command.CommandText, connection)) { foreach (AdomdParameter param in command.Parameters) { var p = param.Clone(); cmdIn.Parameters.Add(p); } try { cmdIn.ExecuteReader(CommandBehavior.SchemaOnly); res = ParserResult.NoParsingError(); } catch (AdomdException ex) { res = new ParserResult(ex.Message.Split(new string[] { "\r\n" }, System.StringSplitOptions.RemoveEmptyEntries)); } } if (connection.State != System.Data.ConnectionState.Closed) connection.Close(); } return res; }
public ParserResult Parse() { ParserResult res = null; using (var conn = new SqlConnection(command.Connection.ConnectionString)) { Trace.WriteLineIf(NBiTraceSwitch.TraceVerbose, command.CommandText); foreach (SqlParameter param in command.Parameters) Trace.WriteLineIf(NBiTraceSwitch.TraceVerbose, string.Format("{0} => {1}", param.ParameterName, param.Value)); var fullSql = string.Format(@"SET FMTONLY ON; {0} SET FMTONLY OFF;", command.CommandText); try { conn.Open(); } catch (SqlException ex) { throw new ConnectionException(ex, command.Connection.ConnectionString); } using (SqlCommand cmdIn = new SqlCommand(fullSql, conn)) { try { cmdIn.ExecuteNonQuery(); res = ParserResult.NoParsingError(); } catch (SqlException ex) { res = new ParserResult(ex.Message.Split(new string[] { "\r\n" }, System.StringSplitOptions.RemoveEmptyEntries)); } } if (conn.State != System.Data.ConnectionState.Closed) conn.Close(); } return res; }