示例#1
0
        public void ExecuteDeleteTest()
        {
            int?         id         = null;
            ISqlObject   source     = new SqlServerSource(TABLE_NAME);
            DbConnection connection = new SqlConnection(Properties.Settings.Default.SqlConnectionString);

            try {
                ISqlSelectStatement identityStatement = new SqlServerSelectStatement();
                identityStatement.SelectClause.AddExpressions(new SqlFunction("IDENT_CURRENT").AddArgument(new SqlServerExpressionFactory().ConstantFactory.Create(TABLE_NAME)));

                ISqlObject          nameField       = new SqlServerField(source, "Name", null);
                ISqlExpression      name            = SqlStringExpression.FromParameter(new SqlParameter("@name", "Insert Test"));
                ISqlInsertStatement insertStatement = new SqlInsertStatement();
                insertStatement.FieldValueClause.SetSource(source).AddField(nameField, name);
                id = SqlHelper.ExecuteInsert(connection, insertStatement, identityStatement);
            } finally {
                if (id.HasValue)
                {
                    ISqlDeleteStatement deleteStatement = new SqlDeleteStatement();
                    deleteStatement.FromClause.Source     = source;
                    deleteStatement.WhereClause.Condition = new SqlServerField(source, "ID", null).Equal(SqlStringExpression.FromParameter(new SqlParameter("@ID", id.Value)));
                    SqlHelper.ExecuteDelete(connection, deleteStatement);
                }
            }
        }
        public void GetParametersTest_OneKeyword()
        {
            ISqlExpression expression = SqlStringExpression.FromParameter(new SqlParameter("@p", true));
            SqlOperator    op         = new SqlOperator("NOT", new SqlKeywordsOperatorResultSqlStringProvider("NOT"), new SqlKeywordsOperatorResultParametersProvider(1));
            ReadOnlyCollection <IDataParameter> parameters = op.Compute(expression).Parameters;

            Assert.AreEqual <int>(1, parameters.Count);
            Assert.IsTrue(parameters.Contains(expression.Parameters[0]));
        }
        public void GetParametersTest_MoreKeywords()
        {
            ISqlExpression expression0 = SqlStringExpression.FromParameter(new SqlParameter("@p0", true));
            ISqlExpression expression1 = SqlStringExpression.FromParameter(new SqlParameter("@p1", true));
            SqlOperator    op          = new SqlOperator("ADD", new SqlKeywordsOperatorResultSqlStringProvider("+"), new SqlKeywordsOperatorResultParametersProvider(1));
            ReadOnlyCollection <IDataParameter> parameters = op.Compute(expression0, expression1).Parameters;

            Assert.AreEqual <int>(2, parameters.Count);
            Assert.IsTrue(parameters.Contains(expression0.Parameters[0]));
            Assert.IsTrue(parameters.Contains(expression1.Parameters[0]));
        }
        public void GetParametersTest()
        {
            ISqlExpression expression0 = new SqlStringExpression("ID");
            ISqlExpression expression1 = SqlStringExpression.FromParameter(new SqlParameter("@p1", 1));
            ISqlExpression expression2 = SqlStringExpression.FromParameter(new SqlParameter("@p2", 2));
            SqlOperator    op          = new SqlOperator("IN", new SqlInOperatorResultSqlStringProvider(), new SqlOperatorResultAllParametersProvider());
            ReadOnlyCollection <IDataParameter> parameters = op.Compute(expression0, expression1, expression2).Parameters;

            Assert.AreEqual <int>(2, parameters.Count);
            Assert.IsTrue(parameters.Contains(expression1.Parameters[0]));
            Assert.IsTrue(parameters.Contains(expression2.Parameters[0]));
        }
示例#5
0
        public void AddArgumentTest_Parametric()
        {
            SqlFunction    target    = new SqlFunction("SUM");
            ISqlExpression argument0 = SqlStringExpression.FromParameter(new SqlParameter("@p0", 13));
            ISqlExpression argument1 = SqlStringExpression.FromParameter(new SqlParameter("@p1", 14));

            target.AddArgument(argument0, argument1);
            Assert.AreEqual <string>(string.Format("{0}({1}, {2})", target.Name, argument0.SqlString, argument1.SqlString), target.SqlString);
            Assert.IsTrue(target.Parameters.Count == 2);
            Assert.IsTrue(target.Parameters.Contains(argument0.Parameters[0]));
            Assert.IsTrue(target.Parameters.Contains(argument1.Parameters[0]));
        }
        public void ParametersTest()
        {
            ISqlObject     source = new SqlServerSource("Table");
            ISqlObject     field0 = new SqlServerField(source, "ID", null);
            ISqlExpression value0 = SqlStringExpression.FromParameter(new SqlParameter("@p0", 13));
            ISqlObject     field1 = new SqlServerField(source, "Type", null);
            ISqlExpression value1 = SqlStringExpression.FromParameter(new SqlParameter("@p1", 14));

            ReadOnlyCollection <IDataParameter> parameters = new SqlFieldValueClause(new SqlUpdateFieldValueClauseSqlStringProvider()).SetSource(source).AddField(field0, value0).AddField(field1, value1).Parameters;

            Assert.AreEqual <int>(2, parameters.Count);
            Assert.IsTrue(parameters.Contains(value0.Parameters[0]));
            Assert.IsTrue(parameters.Contains(value1.Parameters[0]));
        }
        public void SqlStringTest_Parametric()
        {
            ISqlObject          source    = new SqlServerSource("Table");
            ISqlObject          field     = new SqlServerField(source, "ID", null);
            ISqlExpression      value     = SqlStringExpression.FromParameter(new SqlParameter("@p", 13));
            ISqlDeleteStatement statement = new SqlDeleteStatement();

            statement.FromClause.SetSource(source);
            statement.WhereClause.Condition = field.GreaterThan(value);

            Assert.AreEqual <string>(string.Format("{0} {1} {2}", statement.Keyword, statement.FromClause.SqlString, statement.WhereClause.SqlString), statement.SqlString);
            ReadOnlyCollection <IDataParameter> parameters = statement.Parameters;

            Assert.AreEqual <int>(1, parameters.Count);
            Assert.IsTrue(parameters.Contains(value.Parameters[0]));
        }
示例#8
0
        public void InnerJoinTest_Parametric()
        {
            ISqlObject     source0   = new SqlServerSource("Table0");
            ISqlObject     source1   = new SqlServerSource("Table1");
            ISqlObject     id0       = new SqlServerField(source0, "ID", null);
            ISqlObject     id1       = new SqlServerField(source1, "ID", null);
            ISqlExpression value     = SqlStringExpression.FromParameter(new SqlParameter("@p", 13));
            ISqlExpression condition = id0.Equal(id1).And(id0.GreaterEqual(value));
            SqlFromClause  target    = new SqlFromClause();

            Assert.AreEqual <string>(string.Format("FROM {0} INNER JOIN {1} ON {2}", source0.SqlString, source1.SqlString, condition.SqlString),
                                     target.SetSource(source0).InnerJoin(source1, condition).SqlString);
            ReadOnlyCollection <IDataParameter> parameters = target.Parameters;

            Assert.AreEqual <int>(1, parameters.Count);
            Assert.IsTrue(parameters.Contains(value.Parameters[0]));
        }
        public void SqlStringTest_Parametric()
        {
            ISqlObject          source    = new SqlServerSource("Table");
            ISqlObject          field0    = new SqlServerField(source, "ID", null);
            ISqlExpression      value0    = SqlStringExpression.FromParameter(new SqlParameter("@ID", 13));
            ISqlObject          field1    = new SqlServerField(source, "Type", null);
            ISqlExpression      value1    = SqlStringExpression.FromParameter(new SqlParameter("@Type", 14));
            ISqlUpdateStatement statement = new SqlUpdateStatement();

            statement.FieldValueClause.SetSource(source).AddField(field0, value0).AddField(field1, value1);
            ISqlExpression value2 = SqlStringExpression.FromParameter(new SqlParameter("@Flag", 1));

            statement.WhereClause.Condition = new SqlServerField(source, "Flag", null).Equal(value2);

            Assert.AreEqual <string>(string.Format("{0} {1} {2}", statement.Keyword, statement.FieldValueClause.SqlString, statement.WhereClause.SqlString),
                                     statement.SqlString);
            ReadOnlyCollection <IDataParameter> parameters = statement.Parameters;

            Assert.AreEqual <int>(3, parameters.Count);
            Assert.IsTrue(parameters.Contains(value0.Parameters[0]));
            Assert.IsTrue(parameters.Contains(value1.Parameters[0]));
            Assert.IsTrue(parameters.Contains(value2.Parameters[0]));
        }
示例#10
0
 /// <summary>
 /// Creates the SQL expression of a the OracleParameter.
 /// </summary>
 /// <param name="name"></param>
 /// <param name="type"></param>
 /// <param name="direction"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public static ISqlExpression CreateParameterExpression(string name, OracleDbType type, ParameterDirection direction, object value)
 {
     return(SqlStringExpression.FromParameter(CreateParameterInternal(name, type, direction, value)));
 }
示例#11
0
 /// <summary>
 /// Creates the SQL expression of a the OracleParameter.
 /// </summary>
 /// <param name="name"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public static ISqlExpression CreateParameterExpression(string name, object value)
 {
     return(SqlStringExpression.FromParameter(CreateParameterInternal(name, null, null, value)));
 }