1. 程式人生 > >ODBC API常用函式詮釋

ODBC API常用函式詮釋

以下為ODBC API的常用十四個函式,先列出在PowerBuilder中外部函式引用宣告:
     function integer SQLAllocEnv(ref long phenv) library "odbc32.dll"
     function integer SQLFreeEnv(long henv) library "odbc32.dll"
     function integer SQLDataSources(long henv,int fdirection,ref string szdsn,&
integer cbdsnmax,ref integer pcbdsn,ref string szdescription,integer cbdescriptionmax,ref integer pcbdescription)library "odbc32.dll"
     function integer SQLAllocConnect(long henv,ref long hdbc)library "odbc32.dll"
     function integer SQLConnect (long hstmt,ref string szdsn,integer dsnlen,ref string
szuid,integer uidlen,ref string szpwd,integer pwdlen) library "odbc32.dll"
     function integer SQLDisconnect (long hdbc) library "odbc32.dll"
     function integer SQLAllocStmt(long hdbc,ref long hstmt)library "odbc32.dll"
     function integer SQLTables(long hstmt,ref string sztablequalifier,integer tablequalifierlen,ref string szowner,integer owerlen,ref string szname,integer namelen,
ref string sztype,integer typelen)library "odbc32.dll"
     function integer SQLColumns(long hstmt,ref string sztablequalifier,integer tablequalifierlen,ref string szowner,integer owerlen,ref string szname,integer namelen,
ref string sztype,integer typelen)library "odbc32.dll"
     function integer SQLBindCol(long hstmt,integer colnum,integer datatype,ref string name,long maxlen,ref long actlen) library "odbc32.dll"
     function integer SQLFetch(long hstmt)library "odbc32.dll"
     function integer SQLError(long lenv,long hdbc,long hstmt,ref string sqlstate,ref long nativeerror,ref string errormsg,integer errormsgmax,ref integer errormsglen)library "odbc32.dll"
     function integer SQLFreeStmt(long hstmt,integer Options)library "odbc32.dll"
1、function integer SQLAllocEnv(ref long phenv) library "odbc32.dll"
    引數:ref long phenv 引用傳遞的long型別引數,儲存該函式返回的OBDC環境的控制代碼。
        存放在phenv中的值成為以後OBDC API函式呼叫的唯一識別符號。
    返回值:integer 成功時,返回0,失敗返回值小於0。 
    函式功能:獲取ODBC環境控制代碼。
2、function integer SQLAllocStmt(long hdbc,ref long hstmt)library "odbc32.dll"
    引數:long hdbc ODBC環境的控制代碼。
        Ref long hstmt 儲存SQL語句控制代碼。
    返回值:integer ,成功時,返回0,失敗返回值小於0。
    函式功能:獲取SQL語句控制代碼。
3、function integer SQLConnect (long hstmt,ref string szdsn,integer dsnlen,ref string szuid,integer uidlen,
ref string szpwd,integer pwdlen) library "odbc32.dll"
    引數:long hstmt ,呼叫SQLAllocStmt()函式獲取的控制代碼。
      Ref string szdsn,ODBC資料來源名。
      Integer dsnlen ,ODBC 資料來源名的長度。
      Ref string szuid ,使用者帳號。
      Integer uidlen ,使用者帳號長度。
      Ref string szpwd ,使用者口令。
      Ref integer pwdlen,使用者口令長度。
    返回值:integer ,成功時,返回值大於0,失敗返回值小於0。
    函式功能:連線ODBC資料來源,並返回連線控制代碼。
4、 function integer SQLDisconnect (long hdbc) library "odbc32.dll"
    引數:long hdbc 連線控制代碼。
    返回值:integer ,成功時,返回0,失敗返回值小於0。
    函式功能:斷開連線ODBC資料來源。
5、  function integer SQLTables(long hstmt,ref string sztablequalifier,integer tablequalifierlen,ref string szowner,integer owerlen,ref string szname,integer namelen,ref string sztype,integer typelen)library "odbc32.dll"
    引數:long hstmt SQL語句控制代碼 
   ref string sztablequalifier 表的qualifier名。
    integer tablequalifierlen 表的qualifier名的長度。
    ref string szowner 表的所有者名。
    integer owerlen 表的所有者名長度。
    ref string szname 表名。
    integer namelen 表名長度。
    ref string sztype 表的型別名。
    integer typelen 表的型別名長度。
    返回值:integer ,成功時,返回0,失敗返回值小於0。
    函式功能:獲取表的資訊。
6、  function integer SQLColumns(long hstmt,ref string sztablequalifier,integer tablequalifierlen,ref string szowner,integer owerlen,ref string szname,integer namelen, ref string sztype,integer typelen)library "odbc32.dll"
    引數:long hstmt SQL語句控制代碼 
    ref string sztablequalifier 表的qualifier名。
    integer tablequalifierlen 表的qualifier名的長度。
    ref string szowner 表的所有者名。
    integer owerlen 表的所有者名長度。
    ref string szname 表名。
    integer namelen 表名長度。   
    ref string sztype 表的型別名。
    integer typelen 表的型別名長度。
    返回值:integer ,成功時,返回0,失敗返回值小於0。
    函式功能:獲取指定表的列資訊。  
7、Function integer SQLBindCol(long hstmt,integer colnum,integer datatype,ref string name,long maxlen,
ref long actlen) library "odbc32.dll"
    引數:long hstmt SQL語句控制代碼 
    integer colnum 1-5(是否有資格,擁有者名字、型別、註釋)。
    integer datatype 1-8,12,99。
    ref string name 程式字串變數。
    long maxlen 可變。
    ref long actlen 可變。
    返回值:integer ,成功時,返回0,失敗返回值小於0。
    函式功能:繫結結果集。   
8、function integer SQLFetch(long hstmt)library "odbc32.dll"
    引數:long hstmt SQL語句控制代碼 
    返回值:integer ,成功時,返回0,失敗返回值小於0。
    函式功能:繫結結果集。  
9、             function integer SQLError(long lenv,long hdbc,long hstmt,ref string sqlstate,ref long nativeerror,ref string errormsg,integer errormsgmax,ref integer errormsglen)library "odbc32.dll"
    引數:long lenv ODBC 環境控制代碼
    long hdbc 連線控制代碼
    long hstmt sql語句控制代碼
    ref string sqlstate 用於接受包含sql錯誤標識的字串
    ref long nativeerror用於接受包含sql錯誤標識碼
    ref string errormsg用於接受包含sql錯誤資訊的字串
    integer errormsgmax 函式返回的最多字元數
    ref integer errormsglen函式返回的實際字元數   
    返回值:integer ,成功時,返回0,失敗返回值小於0。
    函式功能:返回呼叫ODBC API函式錯誤。
10、function integer SQLFreeEnv(long henv) library "odbc32.dll"
    引數:long lenv ODBC 環境控制代碼
    返回值:integer ,成功時,返回0,失敗返回值小於0。
    函式功能:釋放ODBC環境控制代碼。   
11、function integer SQLFreeStmt(long hstmt,integer Options)library "odbc32.dll"
    引數:long hstmt SQL語句控制代碼。
      integer Options 相關選項。
    返回值:integer ,成功時,返回0,失敗返回值小於0。
    函式功能:釋放SQL語句控制代碼。
12、 function integer SQLDataSources(long henv,int fdirection,ref string szdsn, integer cbdsnmax,ref integer pcbdsn,ref string szdescription,integer cbdescriptionmax,ref integer pcbdescription)library "odbc32.dll"
    引數:long henv ODBC資料來源環境控制代碼。     
      int fdirection 方向標誌 1(下一個),2(第一個),3(最後一個),4(前一個)
      ref string szdsn 資料來源名稱
        integer cbdsnmax資料來源名稱的最大長度
        ref integer pcbdsn資料來源名稱的實際長度
        ref string szdescription 資料來源描述名稱
        integer cbdescriptionmax 資料來源描述字串的最大長度
        ref integer pcbdescription資料來源描述字串的實際長度
    返回值:integer ,成功時,返回0,失敗返回值小於0。
    函式功能:釋放SQL語句控制代碼。
13、function integer SQLAllocConnect(long henv,ref long hdbc)library "odbc32.dll"
    引數:long henv ODBC資料來源環境控制代碼。     
        ref long hdbc 儲存ODBC連線控制代碼。
    返回值:integer ,成功時,返回0,失敗返回值小於0。
    函式功能:獲取ODBC連線控制代碼。
例程:
定義例項變數:
protected:
long henv//sql 環境控制代碼
long hstmt//sql語句控制代碼
long hdbc//sql 連線控制代碼
定義控制代碼外部函式引用:
function integer SQLAllocEnv(ref long phenv) library "odbc32.dll"
     function integer SQLFreeEnv(long henv) library "odbc32.dll"
     function integer SQLDataSources(long henv,int fdirection,ref string szdsn,&
integer cbdsnmax,ref integer pcbdsn,ref string szdescription,integer cbdescriptionmax,ref integer pcbdescription)library "odbc32.dll"
     function integer SQLAllocConnect(long henv,ref long hdbc)library "odbc32.dll"
     function integer SQLConnect (long hstmt,ref string szdsn,integer dsnlen,ref string
szuid,integer uidlen,ref string szpwd,integer pwdlen) library "odbc32.dll"
     function integer SQLDisconnect (long hdbc) library "odbc32.dll"
     function integer SQLAllocStmt(long hdbc,ref long hstmt)library "odbc32.dll"
     function integer SQLTables(long hstmt,ref string sztablequalifier,integer tablequalifierlen,ref string szowner,integer owerlen,ref string szname,integer namelen,
ref string sztype,integer typelen)library "odbc32.dll"
     function integer SQLColumns(long hstmt,ref string sztablequalifier,integer tablequalifierlen,ref string szowner,integer owerlen,ref string szname,integer namelen,
ref string sztype,integer typelen)library "odbc32.dll"
     function integer SQLBindCol(long hstmt,integer colnum,integer datatype,ref string name,long maxlen,ref long actlen) library "odbc32.dll"
     function integer SQLFetch(long hstmt)library "odbc32.dll"
     function integer SQLError(long lenv,long hdbc,long hstmt,ref string sqlstate,ref long nativeerror,ref string errormsg,integer errormsgmax,ref integer errormsglen)library "odbc32.dll"
     function integer SQLFreeStmt(long hstmt,integer Options)library "odbc32.dll"
宣告一個函式wf_sqlerror()
程式碼如下:
string ls_sqlstate,ls_errormsg
integer li_errormsgmax,li_ret
long nativeerror
ls_errormsg=space(255)
ls_sqlstate=space(255)
li_ret=sqlerror(henv,hdbc,hstmt,ls_sqlstate,li_nativeerror,ls_errormsg,255,li_errormsgmax)
messagebox("ODBC:"+ls_sqlstate,ls_errormsg)
return
視窗的open 事件,寫入如下程式碼:
string ls_dsn,ls_description
integer li_direction,li_dsnmax,li_dsn_len
integer li_descriptionmax,li_description_len,li_retval
ls_dsn=space(255)
li_dsnmax=len(li_dsn)
ls_description=space(255)
li_descriptionmax=len(ls_description)
if sqlallocenv(henv)=-1 then
wf_sqlerror()
else
li_driection=1
do while sqldatasources(henv,li_direction,ls_dsn,li_dsnmax,li_dsn_len,ls_description,li_descriptionmax,li_description_len)=0
lb_datasources.additem(ls_dsn0
loop
end if
視窗的close事件中寫入如下程式碼:
sqldisconnect(hdbc)
sqlfreeenv(henv)
在cb_connect按鈕的cliked事件中寫入如下的程式碼:
integer li_ret
string ls_dsn,ls_uid,ls_pwd
string ls_qualifer,ls_owner,ls_name,ls_type,ls_table
long ll_len
ls_dsn=lb_datasources.selecteditem()
ls_uid=sle_uid.text
ls_pwd=sle_pwd.text
li_ret=sqlallocconnect(henv,hdbc)
if li_ret<0 then
   wf_sqlerror()
else
   li_ret=sqlconnect(hdbc,ls_dsn,len(ls_dsn),ls_uid,len(ls_uid),ls_pwd,len(ls_pwd))
   if li_ret<0 then
       wf_sqlerror()
   else
       li_ret=sqlallocstmt(hdbc,hstmt)
       if li_ret<0 then
            wf_sqlerror()
       else
           ls_type="’TABLE’,’VIEW’"
           if cbx_systemtables.checked then
                ls_type=ls_type+",’SYSTEM TABLE ’"
          end if
          li_ret=SQLTABLES(hstmt,ls_qualifier,len(ls_qualifier),ls_owner,len(ls_owner),ls_name,len(ls_name),ls_type,len(ls_type))
         if li_ret<0 then
               wf_sqlerror()
         else
              ls_table=space(255)
              ll_len=255
             sqlbincol(hstmt,3,1,ls_table,ll_len,ll_en)
             lb_tables.setredraw(false)
             do while sqlfetch(hstmt)=0 
                  lb_tables.additem(ls_table)
            loop
            lb_tables.setredraw(true)
            li_ret=sqlfreestmt(hstmt,0)
      end if
  end if
end if
end if
this.enabled=false
this.default=false
cbx_systemtables.enabled=false
在lb_datasources的selectionchanged事件中寫入如下程式碼:
sle_uid.text=""
sle_pwd.text=""
sqldisconnect(hdbc)
cbx_systemtables.enabled=true
cb_connect.enabled=true
lb_columns.reset()
lb_tables.reset()
sle_uid.setfocus()
cb_connect.default=true
在lb_tables的selectionchanged事件中寫入如下程式碼:
integer li_ret,li_len
string ls_qualifier,ls_owner,ls_name,ls_column,ls_colname,ls_type
long ll_maxlen
lb_columns.reset()
ls_qualifier=space(255)
ls_owner=space(255)
ls_column=space(255)
ls_colname=space(255)
ls_type=space(255)
ls_name=space(255)
ls_name=this.selecteditem()
li_ret=sqlcolumns(hstmt,ls_quanlifier,0,ls_owner,0,ls_name,len(ls_name),ls_column,0)
if li_ret<0 then
      wf_sqlerror()
else
    ls_colname=space(255)
    ls_type=space(255)
    ll_maxlen=255
    sqlbindcol(hstmt,4,1,ls_colname,ll_maxlen,ll_maxlen)
    sqlbindcol(hstmt,6,1,ls_type,ll_maxlen,ll_maxlen)
    lb_columns.setredraw(false)
    do while sqlfetch(hstmt)=0
         lb_columns.additem(ls_colname+"~t"+ls_type)
    loop
    lb_columns.setredraw(true)
    li_ret=sqlfreestmt(hstmt,0)
end if
在按鈕cb_exit的clicked事件中寫入以下程式碼:
    close(parent)
在應用物件的open事件中寫入以下程式碼:
    open(w_odbc_data_sources)
 

相關推薦

ODBC API常用函式詮釋

以下為ODBC API的常用十四個函式,先列出在PowerBuilder中外部函式引用宣告:      function integer SQLAllocEnv(ref long phenv) library "odbc32.dll"      function intege

Numpy常用API------常用函式

數學函式 方法 例項 np.sin()np.cos()np.tan() a = np.array([0,30,45,60,90])np.sin(a)np.arcsin(a)

ODBCAPI常用函式詮釋

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><script type="text/

Python+Selenium WebDriver API:瀏覽器及元素的常用函式及變數整理總結

      由於網頁自動化要操作瀏覽器以及瀏覽器頁面元素,這裡筆者就將瀏覽器及頁面元素常用的函式及變數整理總結一下,以供讀者在編寫網頁自動化測試時查閱。 from selenium import webdriver driver=webdriver.Firefox()

PHP-常用函式API

一、PHP基礎語法 變數,常量         嚴格區分大小寫,但內建結構或關鍵字無所謂(echo)     命名:不能以數字,空格,.來開頭,但是可以有漢字,eg:$變數="aa";     可變變數:$a='aa';$$a="bb";則 $a

TensorFlow 學習(七) — 常用函式 api、tf.nn、tf.keras

0. 四則運算 平方:tf.square(),開方:tf.sqrt() tf.add()、tf.sub()、tf.mul()、tf.div()、tf.mod()、tf.abs()、tf.neg()

百度地圖api 常用 例子

getc onf htc 默認 tor settime min navig 通過 功能一:獲取map地圖窗口的可視區域: var map = new BMap.Map("allmap"); // 創建Map實例 map.centerAndZoom(n

Elasticsearch java api 常用查詢方法QueryBuilder構造舉例

舉例 div detail lang 模糊查詢 dna true builder earch 轉載:http://m.blog.csdn.net/u012546526/article/details/74184769 Elasticsearch java api 常用查詢

Selenium API常用方法

取消 bmi ren out 清除 ble itl att css driver.findElements()//定位一組List元素集合 driver.findElement()//定位一個元素 driver.getTitle()//獲取頁面標題 driver.get()

js數組string對象api常用方法

位置 字符串數組 tor body object split script 常用 bst charAt() 方法可返回指定位置的字符。 stringObject.charAt(index) indexOf() 方法可返回某個指定的字符串值在字符串中首次出現的

DB2常用函式三:日期時間函式

DATE函式  語法:DATE(ARG)  DATE函式返回一個日期、時間戳、日期字串、時間戳字串中的日期。 Sql程式碼 eg:       SEL

DB2常用函式二:型別轉換函式

CAST表示式用來轉換型別使用 Sql程式碼    SELECT CAST(CURRENT TIME AS CHAR(8) )&nb

MKL——常用函式說明

Intel MKL,全稱 Intel Math Kernel Library,提供經過高度優化和大量執行緒化處理的數學例程,面向效能要求極高的科學、工程及金融等領域的應用。MKL是一款商用函式庫,提供C、Fortran 和 Fortran 95的支援,但僅支援Intel自家旗下的CPU。 在In

MySQL - 常用函式

SELECT truncate(1314.1314*100, -3); # 131000 SELECT truncate(1314.1314, 0); # 1314 SELECT FORMAT(423423234.65534453,2); # 423,423,234

Python中正則表示式常用函式sub,search,findall,split等使用

1.原生字串r python中字串前面加上 r 表示原生字串,不會轉義。與大多數程式語言相同,正則表示式裡使用"\"作為轉義字元,這就可能造成反斜槓困擾。假如你需要匹配文字中的字元"\",那麼使用程式語言表示的正則表示式裡將需要4個反斜槓"\\":前兩個和後兩個分別用於在程式語言裡轉義成反斜

tensorflow常用函式之tf.nn.softmax

關於softmax的詳細說明,請看Softmax。  通過Softmax迴歸,將logistic的預測二分類的概率的問題推廣到了n分類的概率的問題。通過公式    可以看出當月分類的個數變為2時,Softmax迴歸又退化為logistic迴歸問題。

JavaScript常用函式總結

 最近正在學習js語法,講到函式這一塊內容,感覺有些細節還是挺有用的,所以發文總結一下。      javascript這門語言本身就是一種弱型別語言,它不和像java, c ,c#等等這些語言一樣,在宣告變數和方法的時候不需要對齊進行指定資料型別的修飾,

LoadeRunner常用函式

1. Intweb_reg_save_param("引數名","LB=左邊界","RB=右邊界",LAST);/註冊函式,在引數值出現的前面使用,註冊成功時返回值為0,註冊失敗時返回值為1。左右邊界需根據TreeView裡相關步驟的SeverResponse程式碼來確定。用以上函式能獲取第

Julia:Dict的用法以及一些dict的常用函式

function printsum(a) println(summary(a), ": ", repr(a)) end # dicts can be initialised directly: a1 = Dict(1=>"one", 2=>"two") printsum(a1)

7 mysql常用函式

1  檢視資料庫版本       2  檢視當前資料庫         3  檢視當前登入使用者名稱           4&nbs