我的界面非常基础。它只包含用户输入数据到数据库的编辑,当他们点击我希望它将数据添加到我的数据库中的按钮时。
答案 0 :(得分:2)
您可以轻松完成此操作。
转到“组件”调板的Data Controls
选项卡。
选择TDBEdit
并将其放在与DBNavigator相同的表单上。 IDE将命名此DBEdit1
将Datasource
的{{1}}属性设置为与DBNavigator相同的数据源。
将DBEdit1
的{{1}}属性设置为数据集中字段的名称。
编译并运行。
那就是它。将DBNavigator保留在表单上,因为您会发现当您对DBEdit1的内容进行更改时,其DataField
和DBEdit1
按钮会自动启用以保存或取消更改。
此外,您还会发现,如果您点击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是参数。