程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> ODBCAPI的VBSample

ODBCAPI的VBSample

編輯:VB綜合教程
Example:
  
  PrivateSubCommand1()
  Dima_hEnvAsLong
  Dima_hDBCAsLong
  Dims_DistrictAsLong
  Dimu_DistrictAsLong<p>DimQueryAsString
  DimaTokenAsLong
  DimRetAsInteger<p>Dims_parm1(256)AsByte
  Dims_parm2AsInteger
  Dims_parm3(256)AsByte
  Dims_parm4AsInteger
  DimaDTaxAsSingle
  DimaNextOrderAsInteger
  DimbNextOrderAsInteger
  DimcbValue1AsLong
  DimcbValue2AsLong
  DimcbValue3AsLong
  DimcbValue4AsLong
  DimcbValue5AsLong
  DimiAsInteger
  ’Variablesthatholdthelengthoftheparameters
  cbValue1=SQL_NTS
  cbValue2=0
  cbValue3=SQL_NTS
  cbValue4=0
  cbValue5=0
  ’ConnecttoanAS/400
  Ret=SQLAllocEnv(a_hEnv)’AllocatestheSQLenvironment
  Ret=SQLAllocConnect(a_hEnv,a_hDBC)’Allocatesconnection
  Ret=SQLConnect(a_hDBC,"BANANA",SQL_NTS,"SPEED",SQL_NTS,"SPEED2",SQL_NTS)
  ’Createapreparedstatementtoselectdata
  Ret=SQLAllocStmt(a_hDBC,s_District)
  Query="SelectDTAX,DNXTORfromQUSER.DSTRCTwhere(DWID=?andDID=?)"
  Ret=SQLSetStmtOption(s_District,SQL_CONCURRENCY,SQL_CONCUR_READ_ONLY)
  Ret=SQLPrepare(s_District,Query,SQL_NTS)
  
  
  ’Bindtheparametersfortheselectquery
  Ret=SQLBindParameter(s_District,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,4,0,s_parm1(0),0,cbValue1)
  Ret=SQLBindParameter(s_District,2,SQL_PARAM_INPUT,SQL_C_SSHORT,SQL_INTEGER,3,0,s_parm2,0,cbValue2)
  Ret=SQLBindCol(s_District,1,SQL_C_FLOAT,aDTax,0,0&)
  Ret=SQLBindCol(s_District,2,SQL_C_SSHORT,aNextOrder,0,0&)
  ’Createapreparedstatementtoupdatedata
  Ret=SQLAllocStmt(a_hDBC,u_District)
  Query="UpdateDSTRCTsetDNXTOR=?where(DWID=?andDID=?)"
  Ret=SQLPrepare(u_District,Query,SQL_NTS)
  ’BindtheparametersfortheUpdatequery
  Ret=SQLBindParameter(u_District,1,SQL_PARAM_INPUT,SQL_C_SSHORT,SQL_INTEGER,0,0,bNextOrder,0,cbValue5)
  Ret=SQLBindParameter(u_District,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,4,0,s_parm3(0),0,cbValue3)
  Ret=SQLBindParameter(u_District,3,SQL_PARAM_INPUT,SQL_C_SSHORT,SQL_INTEGER,3,0,s_parm4,0,cbValue4)
  ’YoushouldnotpasscharacterpointerstoDLL’ssoweconvertthemto
  ’bytearrays(actuallyfromUnicodecharaterstringstobytearrays)
  CallStringToBytes("0001",256,s_parm1())’Warehouse
  CallStringToBytes("0001",256,s_parm3())’Warehouse
  ’Thisloopwillincrementafieldintendifferentrows
  Fori=1To10
  ’Settheparameters
  s_parm2=i’District
  s_parm4=i’District
  ’Executetheselectquery.
  Ret=SQLExecute(s_District)
  ’Fetchresults.
  Ret=SQLFetch(s_District)
  Ret=SQLFreeStmt(s_District,SQL_CLOSE)
  ’Dosomeprocessingofthisrow...
  ’Thenincrementthefield
  bNextOrder=aNextOrder 1
  ’Executetheupdate
  Ret=SQLExecute(u_District)
  Ret=SQLFreeStmt(u_District,SQL_CLOSE)
  Next
  ’FreetheODBCresources
  Ret=SQLFreeStmt(s_District,SQL_DROP)
  Ret=SQLFreeStmt(u_District,SQL_DROP)
  Ret=SQLDisconnect(a_hDBC)’Disconnectinganddeallocating.
  Ret=SQLFreeConnect(a_hDBC)
  Ret=SQLFreeEnv(a_hEnv)
  EndSub
  
  PrivateFunctionBytesToString(byte_array()AsByte)AsString
  ’convertbytearraytostring.
  DimDataAsString,StrLenAsString
  Data=StrConv(byte_array(),vbUnicode)
  StrLen=InStr(Data,Chr(0))-1
  BytesToString=Left(Data,StrLen)
  EndFunction
  
  PrivateSubStringToBytes(DataAsString,ByteLenAsInteger,return_buffer()AsByte)
  ’convertstringtobytearray.
  DimStrLenAsInteger,CountAsInteger
  ForCount=0ToLen(Data)-1
  return_buffer(Count)=Asc(Mid(Data,Count 1,1))
  NextCount
  ForCount=Len(Data)ToByteLen
  return_buffer(Count)=0
  NextCount
  EndSub->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved