我使用Gnome数据访问(libgda)来访问C程序中的数据库。
我使用GdaSqlBuilder构建查询。
下面是为请求在字段上添加相等条件的示例代码:

GdaSqlBuilderId add_equal_condition(char* m_name, GValue* m_value)
{
    GdaSqlBuilderId name, value, condition;
    name = gda_sql_builder_add_id(builder, m_name);
    value = gda_sql_builder_add_expr_value(builder, NULL, m_value);
    condition = gda_sql_builder_add_cond(builder, GDA_SQL_OPERATOR_TYPE_EQUAL, name, value, 0);
    return condition;
}

libgda是保护自己不受SQL注入的影响,还是在将输入传递给GDA之前需要自己对其进行清理?
提前谢谢你的回答。

最佳答案

前言对此进行了解释:
当创建包含值(文本)的SQL字符串时,可以
尝试(因为这是最简单的解决方案)创建一个字符串
包含值本身,执行该语句并应用
下次需要执行同一语句时的同一进程
不同的价值观。这种方法有两个主要缺陷
下面是Libgda建议在语句中使用变量的原因
(也称为参数或占位符)并重复使用
当只有变量的值更改时,GdaStatement对象。
https://developer.gnome.org/libgda/unstable/ch06s03.html

09-12 18:22