如何使用编辑而不是DBNavigator将数据添加到Delphi中的数据库?

时间:2015-11-08 11:58:57

标签: delphi

我的界面非常基础。它只包含用户输入数据到数据库的编辑,当他们点击我希望它将数据添加到我的数据库中的按钮时。

1 个答案:

答案 0 :(得分:2)

您可以轻松完成此操作。

  • 转到“组件”调板的Data Controls选项卡。

  • 选择TDBEdit并将其放在与DBNavigator相同的表单上。 IDE将命名此DBEdit1

  • Datasource的{​​{1}}属性设置为与DBNavigator相同的数据源。

  • DBEdit1的{​​{1}}属性设置为数据集中字段的名称。

  • 编译并运行。

那就是它。将DBNavigator保留在表单上,​​因为您会发现当您对DBEdit1的内容进行更改时,其DataFieldDBEdit1按钮会自动启用以保存或取消更改。

此外,您还会发现,如果您点击DBNavigator' +'按钮,开始在表中插入新记录,然后可以将新记录的字段值键入DBEdits。

不要使用正常的非数据库感知Save组件和动态创建的Sql语句,该语句将Cancel的内容连接起来其他Sql在另一个答案中建议,这个答案在这里暂时出现,现在似乎已被删除 - 这是浪费时间,但更重要的是让你的应用容易受到 Sql-Injection 的影响 - 请参阅{{ 3}}。通过向服务器发送未经验证的Sql语句(包括用户键入TEdit的内容),您可以有效地为用户提供在TEdits中键入其他Sql语句的机会,即完全如何进行Sql注入。另一方面,当您使用TEdit时,用于更新数据库记录的Sql由Delphi的TEdit框架自动生成,其方式不会为Sql Injection提供类似的机会。

如果某些原因你必须生成自己的Sql Update语句,为了最大限度地降低Sql Injection的风险,请确保使用参数化更新语句,即更改字段的语句值被指定为TDataSet-descendant的TDBEdits对象中的参数值,而不是Update Sql本身。参数化Update语句的示例可能是:

TDataSet

其中:FieldA,:FieldB和:RowID是参数。