| 订阅 | 在线投稿
分享
 
 
 

在C++中的ODBC API数据库编程

2008-06-01 02:07:47 编辑來源:互联网 国际版 评论
 
 
本文为【在C++中的ODBC API数据库编程】的汉字拼音对照版显示拼音
  yidongtaijiazaishujuyuan

  1tongguoxiugaizhucebiaojiazaishujuyuan

  ·yonghushujuyuanHKEY_CURRENT_USERSOFTWAREODBCODBC.INI

  ·xitongshujuyuanHKEY_LOCAL_MACHINESOFTWAREODBCODBC.INI

  duiyubutongleixingdeshujuyuanzhucebiaodexiugaiyebutongdanjibenshangyaoxiugailianggedifangyigeshizaiODBC.INIzijianxiajianliyigeyushujuyuanmiaoshumingtongmingdezijianbingzaigaizijianxiajianliyushujuyuanpeizhixiangguandexianglingyigeshizaiODBC.INIODBC Data Sourceszijianxiajianliyigexinxiangyi便biangaosuqudongchengxuzhiliqiODBCshujuyuandeleixing

  2tongguoODBC APIjiazaiWindowsxitongzimuluxiadedongtailianjiekuOdbcinst.dlltigongleyigekeyidongtaizengjiaxiugaiheshanchushujuyuandehanshuSQLConfigDataSourceyouyuVCdemorenkuwenjianzhongbubaohancihanshuyinci使shiyongqianxujiangOdbcinst.hwenjianbaohanzaigongchengdetouwenjianzhongzaigongchengdesettingshuxingkuangLinkyedeObject/library modulebianjikuangzhongzengjiaOdbc32.libtongshibaozhengxitongmulusystem32xiayouwenjianOdbccp32.dll

  3wenjianshujuyuandelianjiechuleODBCzhiliqihuankeyitongguoSQLDriverConnectlaitianjiawenjianshujuyuan

  erODBC APIbiancheng

  jiaruyigeODBC APIhanshuzhixingchenggongzefanhuiSQL_SUCCESShuoSQL_SUCCESS_WITH_INFOSQL_SUCCESSzhishiketongguozhenduanjiluhuoquyouguancaozuodejutixinxiSQL_SUCCESS_WITH_INFOzhishiyingyongchengxuzhixingjieguodaiyoujinggaoxinxiketongguozhenduanjiluhuoqujutixinxijiaruhanshutiaoyongshibaifanhuimaweiSQL_ERROR

  yibanbianxieODBCchengxuzhuyaoyouyixiajigebuzhou

  1fenpeihuanjingjubingshengmingyigeSQLHENVdebianliangtiaoyonghanshuSQLAllocHandle

  shezhihuanjingshuxingwanchenghuanjingfenpeihouyonghanshuSQLSetEnvAttrshezhihuanjingshuxingzhuceODBCbanbenhao

  shifanghuanjingjubingwanchengshuju访fangwenrenwushiyingtiaoyongSQLFreeHandleshifangqianmianfenpeidehuanjing

  2fenpeilianjiejubingshengmingyigeSQLHDBCleixingdebianliangtiaoyongSQLAllocHandlehanshufenpeijubing

  shezhilianjieshuxingsuoyoulianjieshuxingdouketongguohanshuSQLSetConnectAttrshezhitiaoyonghanshuSQLGetConnectAttrkehuoquzhexielianjieshuxingdedangqianshezhizhi

  3 lianjieshujuyuanduiyubutongdechengxuheyonghujiekoukeyiyongbutongdehanshujianlilianjie

  SQLConnectgaihanshuzhiyaotigongshujuyuanmingchengyonghuIDhekoulingjiukeyijinxinglianjiele

  SQLDriverConnectgaihanshuyongyigelianjiezifuchuanjianlizhishujuyuandelianjietakeyirangyonghushurubiyaodelianjiexinxi使shiyongxitongzhonghuanmeidingyideshujuyuan

  SQLBrowseConnectgaihanshuzhichiyiyizhongdiedaidefangshihuoqudaoshujuyuandelianjiezhidaozuihoujianlilianjietajiyukehujifuwuqitixijiegouyincibendishujukubuzhichigaihanshu

  4 yubeibingzhixingSQLyuju

  A fenpeiyujujubingyujujubingshitongguotiaoyongSQLAllocHandlehanshufenpeide

  hanshuSQLGetStmrrAttrheSQLSetStmrrAttryonglaihuoquheshezhiyigeyujujubingdexuanxiang使shiyongwantiaoyongSQLFreeHandleshifanggaijubing

  B zhixingSQLyuju

  SQLExecDirectgaihanshuzhijiezhixingSQLyujuduiyuzhizhixingyicideSQLyujulaishuogaihanshushizhixingzuikuaidefangfa

  SQLPrepareheSQLExecuteduiyuxuyaoduocizhixingdeSQLyujulaishuokexiantiaoyongSQLPrepareyubeiSQLyujudezhixingyongSQLExecutezhixingyubeihaodeyuju

  C 使shiyongshenshu使shiyongshenshukeyi使shiyitiaoSQLyujuduocizhixingdedaobutongdejieguo

  hanshuSQLBindParameterfuzeweishenshudingyibianliangjiangyiduanSQLyujuzhongdeyigeshenshubiaoshifu("")kunbangzaiyiqishixianshenshuzhidechuandi

  5 huoqujiluji

  A bangdinglieshouxianbixufenpeiyujilujizhongziduanxiangduiyingdebianliangranhoutongguohanshuSQLBindColjiangjiluziduantongchengxubianliangbangdingzaiyiqiduiyuchangjiluziduankeyitongguotiaoyonghanshuSQLGetDatazhijiequhuishuju

  bangdingziduankeyigenjuzijidexuyaoquanbubangdingyekeyibangdingqizhongdemoujigeziduan

  tongguotiaoyonghanshuSQLBindColjiangbianliangdizhizhifuweiNULLkeyijieshuduiyigejiluziduandebangdingtongguotiaoyonghanshuSQLFreeStmtjiangqizhongxuanxiangsheweiSQL_UNBINDhuozhezhijieshifangjubingdouhuijieshusuoyoujiluziduandebangding

  BSQLFetchgaihanshuyongyujiangjilujidexiayixingbianchengdangqianxingbingbasuoyoukunbangguodeshujuziduandeshujukaobeidaoxiangyingdehuanchongqu

  C guangbiaoyingyongchengxuhuoqushujushitongguoguangbiao(Cursor)laishixiandezaiODBCzhongzhuyaoyou3zhongleixingdeguangbiaodanxiangguangbiaokegundongguangbiaohekuaiguangbiao

  

   youxieyingyongchengxubuzhichikegundongguangbiaohekuaiguangbiaoODBC SDKtigongleyigeguangbiaoku(ODBCCR32.DLL)zaiyingyongchengxuzhongketongguoshezhilianjieshuxing(SQL_STTR_ODBC_CURSOR)jihuoguangbiaoku

  6 jiludetianjiashanchuhegengxinshujuyuanshujugengxinketongguo3zhongfangshitongguoSQLExecDirecthanshu使shiyongxiangyingdeSQLyujutiaoyongSQLSetPoshanshushixianjilujidingyigengxintiaoyongSQLBulkOperationshanshushixianshujugengxin

  diyizhongfangshishiyongyurenheODBCshujuyuanhouliangzhongfangshiyoudeshujuyuanbuzhichiketiaoyongSQLGetInfoquedingshujuyuan

  SQLBulkOperationsgaihanshucaozuojiyudangqianxingjitiaoyongqianxuxiantiaoyongSQLFetchhuoSQLFetchScrollhuoqu

  hanshutiaoyonghoukuaiguangbiaodeweizhibianweiweidingyizhuangkuangyinciyinggaixiantiaoyonghanshuSQLFetchScrollshedingguangbiaoweizhi

  7cuowuchulimeigeODBC APIhanshudounengchanshengyixiliefanyangcaozuoxinxidezhenduanjilukeyiyongSQLGetDiagFieldhanshuhuoquzhenduanjiluzhongtedingdeyulingwaikeyi使shiyongSQLGetDiagRechuoquzhenduanjiluzhongyixiechangyongdeyu

  8shiwuchulishiwutijiaoyouliangzhongfangshizidongtijiaomoshiheshoudongtijiaomoshiyingyongchengxuketongguotiaoyonghanshuSQLSetConnectAttrshedinglianjieshuxingSQL_ATTR_AUTOCOMMITzidongtijiaomoshishimorendelianjieshuxingshezhiduiyusuoyoudeODBCqudongchengxudounengshiyingzhezhongmoshixiasuoyouyujudoushizuoweiyigedulideshiwujinxingchulide

  shoudongtijiaomoshibayizuSQLyujufangruyigeshiwuzhongchengxubixutiaoyonghanshuSQLEenTranmingquedizhongzhiyigeshiwuruo使shiyongduogejihuodeshiwujiubixujianliduogelianjiemeiyigelianjiebaohanyigeshiwu

  9duankaishujulianjiebingshifanghuanjingjubingwanchengshujukucaozuohouketiaoyongSQLDisconnecthanshuguanbitongshujukudelianjie原文
 
 
一、动态加载数据源 1、通过修改注册表加载数据源: ·用户数据源:HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI ·系统数据源:HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI 对于不同类型的数据源,注册表的修改也不同,但基本上要修改两个地方,一个是在ODBC.INI子键下建立一个与数据源描述名同名的子键,并在该子键下建立与数据源配置相关的项;另一个是在\ODBC.INI\ODBC Data Sources子键下建立一个新项以便告诉驱动程序治理器ODBC数据源的类型。 2、通过ODBC API加载:Windows系统子目录下的动态链接库Odbcinst.dll提供了一个可以动态增加、修改和删除数据源的函数SQLConfigDataSource,由于VC的默认库文件中不包含此函数,因此使用前需将Odbcinst.h文件包含在工程的头文件中,在工程的setting属性框Link页的Object/library module编辑框中增加Odbc32.lib,同时保证系统目录system32下有文件Odbccp32.dll。 3、文件数据源的连接:除了ODBC治理器,还可以通过SQLDriverConnect来添加文件数据源。 二、ODBC API编程 假如一个ODBC API函数执行成功,则返回SQL_SUCCESS或SQL_SUCCESS_WITH_INFO,SQL_SUCCESS指示可通过诊断记录获取有关操作的具体信息,SQL_SUCCESS_WITH_INFO指示应用程序执行结果带有警告信息,可通过诊断记录获取具体信息。假如函数调用失败,返回码为SQL_ERROR。 一般,编写ODBC程序主要有一下几个步骤: 1、分配环境句柄:声明一个SQLHENV的变量,调用函数SQLAllocHandle。 设置环境属性:完成环境分配后,用函数SQLSetEnvAttr设置环境属性,注册ODBC版本号。 释放环境句柄:完成数据访问任务时,应调用SQLFreeHandle释放前面分配的环境。 2、分配连接句柄:声明一个SQLHDBC类型的变量,调用SQLAllocHandle函数分配句柄。 设置连接属性:所有连接属性都可通过函数SQLSetConnectAttr设置,调用函数SQLGetConnectAttr可获取这些连接属性的当前设置值。 3、 连接数据源:对于不同的程序和用户接口,可以用不同的函数建立连接 SQLConnect:该函数只要提供数据源名称、用户ID和口令,就可以进行连接了。 SQLDriverConnect:该函数用一个连接字符串建立至数据源的连接,它可以让用户输入必要的连接信息,使用系统中还没定义的数据源。 SQLBrowseConnect:该函数支持以一种迭代的方式获取到数据源的连接,直到最后建立连接,它基于客户机/服务器体系结构,因此本地数据库不支持该函数。 4、 预备并执行SQL语句 A、 分配语句句柄:语句句柄是通过调用SQLAllocHandle函数分配的。 函数SQLGetStmrrAttr和SQLSetStmrrAttr用来获取和设置一个语句句柄的选项,使用完,调用SQLFreeHandle释放该句柄。 B、 执行SQL语句 SQLExecDirect:该函数直接执行SQL语句,对于只执行一次的SQL语句来说,该函数是执行最快的方法。 SQLPrepare和SQLExecute:对于需要多次执行的SQL语句来说,可先调用SQLPrepare预备SQL语句的执行,用SQLExecute执行预备好的语句。 C、 使用参数:使用参数可以使一条SQL语句多次执行,得到不同的结果。 函数SQLBindParameter负责为参数定义变量,将一段SQL语句中的一个参数标识符("?")捆绑在一起,实现参数值的传递。 5、 获取记录集 A、 绑定列:首先必须分配与记录集中字段相对应的变量,然后通过函数SQLBindCol将记录字段同程序变量绑定在一起,对于长记录字段,可以通过调用函数SQLGetData直接取回数据。 绑定字段可以根据自己的需要全部绑定,也可以绑定其中的某几个字段。 通过调用函数SQLBindCol将变量地址值赋为NULL,可以结束对一个记录字段的绑定,通过调用函数SQLFreeStmt,将其中选项设为SQL_UNBIND,或者直接释放句柄,都会结束所有记录字段的绑定。 B、SQLFetch:该函数用于将记录集的下一行变成当前行,并把所有捆绑过的数据字段的数据拷贝到相应的缓冲区。 C、 光标:应用程序获取数据是通过光标(Cursor)来实现的,在ODBC中,主要有3种类型的光标:单向光标、可滚动光标和块光标。 有些应用程序不支持可滚动光标和块光标,ODBC SDK提供了一个光标库(ODBCCR32.DLL),在应用程序中可通过设置连接属性(SQL_STTR_ODBC_CURSOR)激活光标库。 6、 记录的添加、删除和更新:数据源数据更新可通过3种方式:通过SQLExecDirect函数使用相应的SQL语句;调用SQLSetPos函数实现记录集定义更新;调用SQLBulkOperations函数实现数据更新。 第一种方式适用于任何ODBC数据源,后两种方式有的数据源不支持,可调用SQLGetInfo确定数据源。 SQLBulkOperations:该函数操作基于当前行集,调用前,须先调用SQLFetch或SQLFetchScroll获取。 函数调用后,块光标的位置变为未定义状况,因此,应该先调用函数SQLFetchScroll设定光标位置。 7、错误处理:每个ODBC API函数都能产生一系列反映操作信息的诊断记录,可以用SQLGetDiagField函数获取诊断记录中特定的域,另外,可以使用SQLGetDiagRec获取诊断记录中一些常用的域。 8、事务处理:事务提交有两种方式:自动提交模式和手动提交模式。应用程序可通过调用函数SQLSetConnectAttr设定连接属性SQL_ATTR_AUTOCOMMIT,自动提交模式是默认的连接属性设置,对于所有的ODBC驱动程序都能适应这种模式下,所有语句都是作为一个独立的事务进行处理的。 手动提交模式把一组SQL语句放入一个事务中,程序必须调用函数SQLEenTran明确地终止一个事务。若使用多个激活的事务,就必须建立多个连接,每一个连接包含一个事务。 9、断开数据连接并释放环境句柄:完成数据库操作后,可调用SQLDisconnect函数关闭同数据库的连接。
󰈣󰈤
日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

兄弟共妻,我成了他们夜里的美食

老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...

网络安全治理:国家安全保障的主要方向是打击犯罪,而不是处置和惩罚受害者

来源:中国青年报 新的攻击方法不断涌现,黑客几乎永远占据网络攻击的上风,我们不可能通过技术手段杜绝网络攻击。国家安全保障的主要方向是打击犯罪,而不是处置和惩罚...

 
 
 
>>返回首页<<
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 
 热帖排行
 
80后模特儿
初夏依娜休闲
边缘
英德沙口油菜花
 
 
王朝网络微信公众号
微信扫码关注本站公众号wangchaonetcn
 
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
©2005- 王朝网络 版权所有