準備與使用語句

2021-06-16 01:03:07 字數 2536 閱讀 7999

準備與使用

語句繼續我們的學習,在這一章,我們來看看如何通過odbc來運算元據源.

在上一章,我們已學習了第一步,怎樣連線乙個資料來源。乙個連線定義了使用者與資料來源的資料通道.它是靜態的.如果要想運算元據源,我們就必須使用

語句(statement).可以認為

語句就是發給資料來源的命令.這個"命令"必須用sql寫成.通過使用

語句,我們就可以修改資料來源的結構、在其中執行查詢、修改及刪除資料.

準備及使用

語句可分為以下幾個步驟:

分配乙個

語句控制代碼(statementhandle)建立sql

語句執行

語句銷毀

語句分配乙個

語句控制代碼

可以通過呼叫函式sqlallochandle來分配乙個

語句控制代碼。例子如下:

.data?

hstmtdd?

.code

......

invokesqlallochandle,sql_handle_stmt,hconn,addrhstmt

建立sql

語句這部分你就得靠自己了你必須知道sql的語法.比如說,當你想建立乙個表時,你就得知道createtable

語句.執行

語句執行

語句有四種方法,由它們是否被引擎編譯過(

準備好)及被怎樣定義有關.

直接執行(directexecution)由使用者程式定義sql

語句.語句在執行時(runtime)被編譯並執行.編譯執行(preparedexecution)也是由使用者程式定義sql

語句,但編譯和執行被分為兩步:首先sql被

準備好(被編譯),接下來被執行.通過這種方法,我們可以只編譯sql

語句一次但執行相同的

語句多次以節省時間.儲存過程(procedures)sql

語句被編譯並存放在資料來源內,使用者程式可以在執行時呼叫這些

語句.目錄(catalog)sql被硬編碼(hardcoded)在odbc驅動程式內.目錄函式的目的是返回預定義的結果集例如資料庫中的所有表名.總的來說,目錄函式用來獲得資料來源的資訊的使用者程式可以在執行時呼叫它們.

這四種方法各有優缺點.當你只執行某一sql

語句一次時,直接執行是乙個很好的選擇;如果你要經常執行某一

語句,則應首選編譯執行因為sql

語句僅在第一次執行時被編譯,在接下來的執行中,它將執行更快,因為已被編譯過了;儲存過程是注重速度的最佳選擇,因為它已被編譯過並存放在資料來源中了。缺點是並不是所有的資料儲存都支援儲存過程.目錄主要是是用來獲得資料來源結構的一些資訊。

在本章中,我們主要看一下直接執行和編譯執行,因為它們是由我們的程式來完成的.編寫儲存過程是dbms(資料庫管理系統)的事.而目錄將在稍後討論.

直接執行

要直接並快速執行sql

語句,以如下語法呼叫函式sqlexecdirect:

sqlexecdirectprotostatementhandle:dword,

pstatementtext:dword,

textlength:dword

statementhandle.要使用的

語句控制代碼pstatementtext.指向要執行的sql

語句的指標textlength.sql

語句的長度.

可能的返回值如下:

sql_success操作順利sql_success_with_info操作順利但可能產生非致命錯誤sql_error操作失敗sql_invalid_handle使用的

語句控制代碼非法sql_need_data如果在執行sql

語句前沒有提供足夠的引數將會獲得這個返回值.這時需呼叫sqlparamdata或sqlputdata函式來提交引數.sql_no_data如果sql

語句不返回結果集,例如只是乙個查詢動作,將獲得這個返回值。使使用者知道動作成功,但沒有結果集被返回。sql_still_executing如果非同步執行sql

語句,sqlexecdirect會立刻返回這個值,表明

語句正在執行。在通常情況下,如果你使用的乙個多執行緒,非同步執行是乙個好主意。如果你希望非同步執行,舊可以通過sqlsetstmtattr來設定

語句屬性。

例子:.data

sqlstmtdb"select*fromsales",0

.data?

hstmtdd?

.code

.....

invokesqlallochandle,sql_handle_stmt,hconn,addrhstmt

.ifax==sql_success||ax==sql_success_with_info

invokesqlexecdirect,hstmt,addrsqlstmt,sizeofsqlstmt

編譯執行

sql的執行被分為兩步:第一步,必須通過呼叫函式sqlprepare來*

準備*語句。第二步,通過呼叫sqlexecute函式來執行

語句.在使用編譯執行時,我們可以多次呼叫sqlexecute來執行同一

語句.結合使用sql引數,這個方法對執行同一

語句極為有效。1

Mysql alter常見使用語句

新增主鍵 alter table tabelname add new field id int 5 unsigned default 0 not null auto increment add primary key new field id 增加乙個新列 alter table rpt fmp e...

Mysql 日常基本使用語句

目錄 1 更改資料庫表介面常用sql 2 常用查詢sql查詢函式 3 轉換函式 4 mysql設定主鍵從1開始自增 5 mysql檢查欄位中某個字元出現的次數?檢查字段包含幾個某字元 由於在開發過程之中經常可能涉及到針對表結構進行增加字段 需要指定在某個欄位後增加 或者修改及重名某個字段資訊 建立測...

mysql使用結巴語句 MySQL的使用語句

show databases 查詢所有的庫 drop database mldn 刪除庫 create database mldn 建立庫 use mldn 選擇用庫 show tables 查詢所有的表 desc 表名稱 檢視表結構 改變結構 alter table user change pas...