From 978b5ee2c04922726eeb515d2e1ecc3661ea6d99 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Wed, 2 Oct 2019 15:12:00 +0200 Subject: [PATCH] Added function GdaExSqlBuilder::where_int. --- src/sqlbuilder.c | 32 +++++++++++++++++++++++++++++++- src/sqlbuilder.h | 9 ++++++++- tests/sqlbuilder.c | 24 +++++++++++++++++++++++- 3 files changed, 62 insertions(+), 3 deletions(-) diff --git a/src/sqlbuilder.c b/src/sqlbuilder.c index e37c840..fb81306 100644 --- a/src/sqlbuilder.c +++ b/src/sqlbuilder.c @@ -1,7 +1,7 @@ /* * sql_builder.c * - * Copyright (C) 2010-2016 Andrea Zagli + * Copyright (C) 2010-2019 Andrea Zagli * * This file is part of libgdaex. * @@ -560,6 +560,36 @@ gdaex_sql_builder_where (GdaExSqlBuilder *sqlb, GdaSqlOperatorType op, ...) return priv->id_where; } +GdaSqlBuilderId +gdaex_sql_builder_where_int (GdaExSqlBuilder *sqlb, GdaSqlOperatorType op, + const gchar *table_name, + const gchar *field_name, + const gchar *field_alias, + GdaSqlOperatorType where_op, + gint op1, + gint op2) +{ + GValue *val1; + GValue *val2; + + GdaSqlBuilderId id; + + val1 = g_new0 (GValue, 1); + g_value_init (val1, G_TYPE_INT); + g_value_set_int (val1, op1); + + val2 = g_new0 (GValue, 1); + g_value_init (val2, G_TYPE_INT); + g_value_set_int (val2, op2); + + id = gdaex_sql_builder_where (sqlb, op, table_name, field_name, field_alias, where_op, val1, val2, NULL); + + g_value_unset (val1); + g_value_unset (val2); + + return id; +} + /** * gdaex_sql_builder_order: * @sqlb: diff --git a/src/sqlbuilder.h b/src/sqlbuilder.h index af3343c..2645700 100644 --- a/src/sqlbuilder.h +++ b/src/sqlbuilder.h @@ -1,7 +1,7 @@ /* * sqlbuilder.h * - * Copyright (C) 2015-2016 Andrea Zagli + * Copyright (C) 2015-2019 Andrea Zagli * * This file is part of libgdaex. * @@ -70,6 +70,13 @@ void gdaex_sql_builder_fields (GdaExSqlBuilder *sqlb, ...); GdaSqlBuilderId gdaex_sql_builder_where (GdaExSqlBuilder *sqlb, GdaSqlOperatorType op, ...); +GdaSqlBuilderId gdaex_sql_builder_where_int (GdaExSqlBuilder *sqlb, GdaSqlOperatorType op, + const gchar *table_name, + const gchar *field_name, + const gchar *field_alias, + GdaSqlOperatorType where_op, + gint op1, + gint op2); void gdaex_sql_builder_order (GdaExSqlBuilder *sqlb, ...); diff --git a/tests/sqlbuilder.c b/tests/sqlbuilder.c index 2a29520..7c2604d 100644 --- a/tests/sqlbuilder.c +++ b/tests/sqlbuilder.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015 Andrea Zagli + * Copyright (C) 2015-2019 Andrea Zagli * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -133,6 +133,27 @@ main (int argc, char **argv) g_object_unref (sqlb); + sqlb = gdaex_sql_builder_new (GDA_SQL_STATEMENT_DELETE); + + gdaex_sql_builder_from_v (sqlb, + "pippo", "pluto", + "topolino", "", + NULL); + + gdaex_sql_builder_where_int (sqlb, 0, + "pippo", "id", "", + GDA_SQL_OPERATOR_TYPE_EQ, + 1, 0); + + gdaex_sql_builder_where_int (sqlb, GDA_SQL_OPERATOR_TYPE_OR, + "pippo", "id", "", + GDA_SQL_OPERATOR_TYPE_BETWEEN, + 1, 99); + + g_message ("sql: %s", gdaex_sql_builder_get_sql (sqlb, NULL, NULL)); + + g_object_unref (sqlb); + sqlb = gdaex_sql_builder_new (GDA_SQL_STATEMENT_UPDATE); gdaex_sql_builder_from_v (sqlb, @@ -146,6 +167,7 @@ main (int argc, char **argv) gdaex_sql_builder_fields (sqlb, "pippo", "name", "", gval, NULL); + g_value_unset (gval); gval = g_new0 (GValue, 1); g_value_init (gval, G_TYPE_INT); -- 2.49.0