【问题标题】:Insert data into database [Delphi]将数据插入数据库 [Delphi]
【发布时间】:2010-02-26 20:10:10
【问题描述】:

我正在尝试使用 TAdoTable 组件,

  • 在 Create 表单上我调用 .Append() 并在按钮中调用 .Post()

但它会加载整个表格!我不需要它来加载任何东西,只需要在这个表中插入一行。

我想知道是否有使用 Ado 将数据插入数据库的“好方法”,我已经尝试使用 TAdoCommand 的“手动”方法,但它似乎不适合我

  • 我使用 Format() 生成 INSERT 查询,所有字符串字段都使用 QuotedStr() 进行转义

提前致谢!

亚瑟。

【问题讨论】:

    标签: sql database delphi ado


    【解决方案1】:

    您可以使用 TADODataset(或 TADOQuery)。

    我有时这样做的方法是设置 CommandText 从表中返回 0 条记录,即SELECT TOP 0 * FROM [table],然后使用.Append.Post

    但就个人而言,我更喜欢编写 SQL,例如使用 TADOCommand

    【讨论】:

    • 这就是我想要的。 “手动”挂载具有 13 个字段的插入并不漂亮。
    • 代替“select top 0”,您还可以使用 where 子句,例如“select * from Table where PrimaryKeyField = 0”。只需确保使用表中永远不会存在的值
    【解决方案2】:

    如果您不需要显示表的数据,请使用 TADOQuery 对象。

    基本上:

    • 使用 TADOQuery.SQL.Text 设置 SQL 命令
    • 使用 TADOQuery.ExecSQL 方法触发 SQL 命令

    【讨论】:

      【解决方案3】:

      您还可以使用 TADOCommand 组件,并让它执行特定的 SQL 命令。如果您发现自己一遍又一遍地执行相同的命令(例如插入表中),那么请考虑使用参数,而不是直接更改每次调用的 SQL。参数易于使用,只需在您的 sql 中放置一个 :PARAMNAME,然后使用您使用的 ado 组件上的参数对象来设置值。例如:

      假设TAdoCommand组件的CommandText包含“INSERT INTO TABLENAME (FIELD1) VALUES (:FIELDVALUE1)

      AdoCommand1.Parameters.ParamByName('FIELDVALUE1').Value := 'TEST'
      AdoCommand1.Execute;
      

      当上面的sql被执行时,字符串“TEST”会被写入FIELD1。

      【讨论】:

        【解决方案4】:
        var
          CountVar: Integer;
        
        begin
        
          TADOConnection1.Execute(ASQLInsertStatement, CountVar, [adExecuteNoRecords]);
        
        end;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-29
          • 2020-07-05
          • 2023-04-10
          相关资源
          最近更新 更多