sql数据库同步方式-sql查询不在数据表的数据
同步和异步执行方式 ODBC2.0访问数据库时,有同步执行方式和异步执行方式。 所谓同步执行模式,就是在同步执行模式下,语句会一直保持对程序流程的控制,直到程序结束。 例如,在查询操作中,客户端的应用程序向服务器发送查询操作命令后,会等待服务器将查询结果返回给客户端,然后再进行下一步操作。
所谓异步执行模式是指在异步执行模式下,每条语句执行结束的顺序不一定与语句开始执行的顺序相同。 例如查询操作,客户端上的应用程序向服务器端发送查询操作指令后,会立即执行查询语句的下一条语句,而无需等待服务器端将查询结果返回给客户端再继续执行下一步。 . 在一些应用程序开发工具中,虽然它们提供了使用数据控制项和数据库对象变量的编程,但没有很好地考虑同步和异步执行模式之间的重要区别。 为了让程序运行得更快,默认的语句执行方式是异步方式。 对于一般的程序员来说,如果不了解同步执行模式和异步执行模式,往往会参考服务器在向服务器发送操作语句(查询或读取记录等)后立即返回的执行结果。 server ,或者对结果进行下一步操作; 在异步执行模式下,客户端上的后续语句在操作语句发出后执行sql数据库同步方式,但由于各种原因,服务端可能无法完成操作语句,并在后续语句之前将结果返回给客户端被执行。 因此,当后面的语句引用前面运行语句的执行结果时,往往会因为执行结果不存在而引用错误的值,从而导致系统错误或死锁。
为解决上述问题,可采用以下两种方案: ①使用ODBC2.0 API将语句执行状态设置为同步执行模式。 在ODBC2.0API中,函数SQLSetStmtOption()的作用是设置同步或异步执行模式。 我们可以使用如下语句将语句执行状态设置为同步执行模式: iRetCodeКSQLSetStmtOption(hStmt, SQL-ASYNC-EN-ABLE, 0) 其中,hStmt是一个有效的语句句柄,常量SQL-ASYNC-ENABLE是为了设置Option,参数0表示关闭该选项(即异步执行方式)。 如果iRetCode返回SQL-SUCCESS,说明语句执行状态已经设置为同步执行模式。 ②利用ODBC2.0API,将语句的执行状态设置为异步执行方式,然后在程序中不断查询某个操作语句是否已经执行。 第一次调用这些函数后,会返回值SQL-STILL-EXE-CUTING,应用程序会继续执行后面的语句。 一段时间后,应再次调用原始函数,注意:实际参数应传递与第一次调用时相同的语句句柄sql数据库同步方式,其他参数应相同(但会被忽略)。 如果函数返回值为SQL-SUCCESS,说明语句已经执行; 如果函数返回SQL-STILL-EXECUTING,说明语句还在执行中。 我们可以用一个简单的例子来说明这一点,如下所示:
iRetCodeκSQLSetStmtOption(hStmt, SQL-ASYNC-ENABLE, 1)' 设置语句执行模式为异步执行模式 iRetCodeκSQLExecDirect(hStmt, "SELECT * FROM employees", 23)。 . . . . . '执行其他操作 iRetCodeκSQLExecDirect(hStmt, "SELECT*FROMemployees", 23)' 判断SQLExecDirect()是否已经执行 If (iRetCodeκSQL-STILL-EXECUTING) Then。 . . . . . '语句没有执行完,继续执行其他操作 ElseIf(iRetCodeКSQL-SUCCESS)Then。 . . . . . '语句已经执行完毕,可以处理语句运行的结果 EndIfEndIf
同步执行方式可以简化编程的复杂度。 对ODBC2.0 API不是很熟悉的程序员,无需过多了解更复杂的ODBC2.0 API,只需使用数据控制项和数据库对象变量就可以编写应用程序。 ,从而大大提高了开发效率,但是程序的运行速度没有异步执行方式快。 虽然异步执行模式在编程时非常复杂,但是在这种模式下可以进行多任务并行执行,大大提高了执行效率。