中国站长下载-为中国站长提供最好最全的建站资源! 首 页发布资源有事留言繁體中文
设为首页
加入收藏
联系我们
 
您当前的位置:中国站长下载 -> 文章中心 -> 数据库区 -> SYBASE -> 文章内容  虚拟主机 域名注册 退出登录 用户管理
栏目导航
· ACCESS · MSSQL
· Mysql · DB2
· ORACLE · SYBASE
· 其他相关
热门文章
· sndvol32 - sndvol3...
· [组图] FLASH:《大话李白》...
· 个人网站到底能赚多...
· [图文] Rundll.exe是病毒吗...
· [组图] Flash:制作MV
· 价值12万元的网站SE...
· 网站创业者,你需要...
· 一个成功的网站设计...
· [图文] FLASH:韩国导航条解...
· 中国网站的赚钱模式...
相关文章
· php3的ODBC函数
· 比较ADO与ODBC的区别...
· 怎样在vc、delphi中...
· 使用MySql ODBC进行...
· 采用ODBC接口访问My...
· 理解odbc和ole
ODBC API常用函数诠释
作者:无从考证  来源:转载  发布时间:2005-12-5 11:28:08  发布人:chinazhan

 减小字体 增大字体

例程:
定义实例变量:
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)

上一页  [1] [2] 

 
[] [返回上一页] [打 印] [收 藏]
下一篇文章:Sybase ASE 安装指南
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
中国站长下载
中国站长下载

本页只接受PR>=4 IT类站点连接,申请连接,谢谢您们的支持!希望我们的下载站能够真正帮到中国的站长们!
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图
Copyright © 2005-2006 ChinaZhan.Net. All Rights Reserved .