0

在这里,我对存储过程感到困惑。在这里,我们将所有与数据库相关的操作应用到代码中:

string query = "insert into accounts(name, opening_balance, category, address, contact_person, phone_number) values("
                                + "'" + account.Name + "',"
                                + account.OpeningBalance + ","
                                + account.Category.Id + ","
                                + "'" + account.Address + "',"
                                + "'" + account.ContactPerson + "',"
                                + "'" + account.PhoneNumber + "')";
            account.Id = SQLiteHelper.ExecuteInsert(query);

我们可以在存储过程中应用它吗?如果是这样:如何?存储过程比它有什么优势?

4

2 回答 2

3

MVVM 与您的 SQL 问题无关。

基本上,您不应该将值串在一起形成 SQL 表达式,因为它允许最终用户注入 SQL 代码。IE。真是个坏主意

存储过程使您可以更好地控制参数并避免注入攻击。它还允许您在不更改调用 C# 代码的情况下进行细微更改,例如,如果数据库发生轻微更改。

不幸的是,SQLite 似乎不支持存储过程,因此您可能希望改变您的方法。看看这个链接:http ://www.sqlite.org/whentouse.html

如果您必须坚持使用 SQLite,而不是使用 SQL CE,您将需要在代码中添加验证检查以确保不插入 SQL 语句。

于 2012-05-18T09:24:50.617 回答
0
  1. 您应该检查 sql 中插入的值以避免 sql 注入。
  2. 数据访问代码不应该在视图模型中。它应该在模型中。
于 2012-05-18T10:08:33.767 回答