我使用MSSQL和ADO运行各种SQL语句。
代码序列如下所示:
aADOQuery.Active := False;
aADOQuery.SQL.Text := ' MY SQL STATEMENT ';
aADOQuery.ExecSQL;
aADOQuery.Active := True;
如果SQL返回结果为空,则最后一条语句将失败。如何检查这种情况以避免运行时错误?
注意:SQL语句来自用户在其中键入SQL的备忘录。
如果您的查询返回记录集(SELECT
报表),你应该 不 使用ExecSQL
,而只是aADOQuery.Open
或Active := True
。
对于不返回记录集例如查询INSERT
/ UPDATE
/
DELETE
,使用ExecSQL
。在大多数情况下,您会aADOQuery.RowsAffected
通过查询返回。
其他SQL语句,你应该使用ExecSQL
是CREATE
/ ALTER
/
DROP
/EXEC
等…(没有RowsAffected
在这种情况下返回)
如果查询没有将游标返回到数据(例如INSERT
语句),则尝试Open
或将其设置TDataSet
为Active
将失败。
您可以使用ADOConnection.Execute
代替TADOQuery
执行命令文本,然后检查是否有一个有效的Recordset
返回ADOConnection
。在ADOConnection.OnExecuteComplete
你可以做这样的事情:
procedure TForm1.ADOConnection1ExecuteComplete(Connection: TADOConnection;
RecordsAffected: Integer; const Error: Error;
var EventStatus: TEventStatus; const Command: _Command;
const Recordset: _Recordset);
begin
// check for errors
if Assigned(Error) then
begin
Memo1.Lines.Add('Error: ' + Error.Description);
end;
// check for a valid recordset
if Assigned(Recordset) then
begin
MyDataSet.Recordset := Recordset; // MyDataSet is TADODataSet
end;
// check for affected rows
if RecordsAffected >= 0 then
Memo1.Lines.Add('Records affected: ' + IntToStr(RecordsAffected))
else
Memo1.Lines.Add('Record count: ' + IntToStr(MyDataSet.RecordCount));
end;
我们可以使用Stream作为返回类型可以对查询结果进行逐个处理。 Example 9. Stream the result of a query with Java 8 Stream(stream查询结果) @Query("select u from User u") Stream<User> findAllByCustomQueryAndStream(); Stream<User> readA
Spring Data repository中的查询可以异步执行,参考Spring执行异步方法。这意味着方法可以在被调用时立刻返回,而真正的查询执行会被当做一个任务提交到Spring的TaskExecutor。 @Async Future<User> findByFirstname(String firstname); //1 @Async CompletableFu
要运行查询,在工具栏中点击 运行 。如果查询语句是正确的,该查询将被运行,如果该查询应该返回数据,结果 选项卡会打开查询返回的数据。如果运行查询时发生错误,运行停止,显示相应的错误信息。 结果 选项卡以网格显示查询返回的结果数据。数据可以用两种模式显示:网格查看 和 表单查看。详细信息请看表查看 器。 提示:Navicat 支持返回 10 个结果集。 注意:你可以通过选择 查看 -> 显示结果 -
你可以在任何的服务器运行查询。在工具栏的下拉式列表中选择目标服务器和数据库。然后点击 “运行”。如果该查询语句是正确的,它将被运行。如果该查询应该返回数据,“结果”选项卡会打开并显示返回的数据。如果运行查询时发生错误,运行会停止并显示相应的错误信息。 “结果”选项卡以网格显示查询返回的结果数据。数据可以用三种模式显示:网格视图、树视图和 JSON 视图。详细信息请参阅数据查看器。 【注意】Navi
你可以在任何的服务器运行查询。在工具栏的下拉式列表中选择目标服务器、数据库和/或模式。然后点击 “运行”。如果该查询语句是正确的,它将被运行。如果该查询应该返回数据,“结果”选项卡会打开并显示返回的数据。如果运行查询时发生错误,运行会停止并显示相应的错误信息。 “结果”选项卡以网格显示查询返回的结果数据。数据可以用两种模式显示:网格视图和表单视图。详细信息请参阅数据查看器。 【注意】Navicat
你可以在任何的服务器运行查询。在工具栏的下拉式列表中选择目标服务器和数据库。然后点击 。如果该查询语句是正确的,它将被运行。如果该查询应该返回数据,“结果”选项卡会打开并显示返回的数据。如果运行查询时发生错误,运行会停止并显示相应的错误信息。 “结果”选项卡以网格显示查询返回的结果数据。数据可以用三种模式显示:网格视图、树视图和 JSON 视图。详细信息请参阅数据查看器。 【注意】Navicat