Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

C++ operates to the database through ADO

2025-04-02 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Database >

Share

Shulou(Shulou.com)06/01 Report--

C _ blank + operates on the database through ADO

Example: C++ writes data to sql server through ADO call stored procedure

1. Import the dynamic library of ado provided by Microsoft in the .h header file

# pragma warning (disable:4146)

# import "C:\\ Program Files\\ Common Files\ System\\ ado\\ msado15.dll" named_guids rename ("EOF", "adoEOF"), rename ("BOF", "adoBOF")

# pragma warning (default:4146)

Using namespace ADODB

two。 Write a function call stored procedure

/ / Save database records

Void SaveDbTran (char * devID,char * traceNo,char * refNo,char * batchNo, char * bankCardNo, char * tranDate, char * tranTime,char * amt,char * hosCardNo,char * hosName,char * hosIDCardNo, char * msg)

{

/ / 2.1 create a database connection handle

_ ConnectionPtr pMyConnect

HRESULT hr

Try

{

/ / 2.1.1 build connection database string

Char * dbConStr = new char [400]

Strcpy (dbConStr, "Provider=SQLOLEDB;Server=sqlserver server address, 1433 database = database name; uid= login user; pwd= login password")

CoInitialize (NULL)

Sleep (300)

/ / 2.1.2 handle instantiation to achieve connection

Hr = pMyConnect.CreateInstance ("ADODB.Connection")

If (SUCCEEDED (hr))

{

Ct.SaveLog ("database connection object created successfully, waiting for connection to be opened", 0ddbConStr)

PMyConnect- > Open (_ bstr_t (dbConStr), ",", adModeUnknown)

}

Else

{

CoUninitialize ()

Return

}

}

Catch (_ com_error & err)

{

CoUninitialize ()

Return

}

/ / 2.2 build run command parameter handle

_ CommandPtr m_pCommand

_ RecordsetPtr m_pRecordset

Try

{

/ / 2.2.1 handle instantiation

M_pCommand.CreateInstance (_ _ uuidof (Command)); / / Command does not need to change

MSecretpCommand-> ActiveConnection = pMyConnect;//pMyConnect is the connection database handle

No need to change CommandType order-> CommandType = adCmdStoredProc;//adCmdStoredProc

MroompCommand-> CommandText = _ bstr_t ("p_d_tra"); / / p_d_tra is the stored procedure name

/ / 2.2.2 set to assign values to variable parameters

_ variant_t vv_dotype,vv_TranNo,vv_devID,vv_TranDate,vv_TranTime

_ variant_t vv_RetCode,vv_BusType,vv_CardNo,vv_IDCard,vv_Name

_ variant_t vv_Amt,vv_Notes,vv_SerID,vv_DesCont,vv_tranFlag

_ variant_t vv_bankCardNo,vv_bankGroupNo,vv_bankFlowNo,vv_DevName,vv_ExeCount

/ / value to variant

Vv_dotype = _ variant_t (_ bstr_t ("1"))

Vv_TranNo = _ variant_t (_ bstr_t (temp_traceNo))

Vv_devID = _ variant_t (_ bstr_t (devID))

Vv_TranDate = _ variant_t (_ bstr_t (datetime))

Vv_TranTime = _ variant_t (_ bstr_t (datetime))

Vv_RetCode = _ variant_t (_ bstr_t (""))

Vv_BusType = _ variant_t (_ bstr_t ("14"))

Vv_CardNo = _ variant_t (_ bstr_t (hosCardNo))

Vv_IDCard = _ variant_t (_ bstr_t (hosIDCardNo))

Vv_Name = _ variant_t (_ bstr_t (hosName))

Vv_Amt = _ variant_t (_ bstr_t (amt))

Vv_Notes = _ variant_t (_ bstr_t ("transaction succeeded"))

Vv_SerID = _ variant_t (_ bstr_t (""))

Vv_DesCont = _ variant_t (_ bstr_t (""))

Vv_tranFlag = _ variant_t (_ bstr_t ("0"))

Vv_bankCardNo = _ variant_t (_ bstr_t (temp_bankCardNo))

Vv_bankGroupNo=_variant_t (_ bstr_t (batchNo))

Vv_bankFlowNo = _ variant_t (_ bstr_t (refNo))

Vv_DevName = _ variant_t (_ bstr_t (""))

Vv_ExeCount = _ variant_t (ret_ExeCount)

/ / 2.2.3 create database stored procedure input parameters

_ ParameterPtr mp_dotype,mp_TranNo,mp_devID,mp_TranDate,mp_TranTime

_ ParameterPtr mp_RetCode,mp_BusType,mp_CardNo,mp_IDCard,mp_Name

_ ParameterPtr mp_Amt,mp_Notes,mp_SerID,mp_DesCont,mp_tranFlag

_ ParameterPtr mp_bankCardNo,mp_bankGroupNo,mp_bankFlowNo,mp_DevName,mp_ExeCount

/ / 2.2.3.1 instantiate database parameters

/ / create ParameterPtr instance

Mp_dotype.CreateInstance (_ _ uuidof (Parameter))

Mp_TranNo.CreateInstance (_ _ uuidof (Parameter))

Mp_devID.CreateInstance (_ _ uuidof (Parameter))

Mp_TranDate.CreateInstance (_ _ uuidof (Parameter))

Mp_TranTime.CreateInstance (_ _ uuidof (Parameter))

Mp_RetCode.CreateInstance (_ _ uuidof (Parameter))

Mp_BusType.CreateInstance (_ _ uuidof (Parameter))

Mp_CardNo.CreateInstance (_ _ uuidof (Parameter))

Mp_IDCard.CreateInstance (_ _ uuidof (Parameter))

Mp_Name.CreateInstance (_ _ uuidof (Parameter))

Mp_Amt.CreateInstance (_ _ uuidof (Parameter))

Mp_Notes.CreateInstance (_ _ uuidof (Parameter))

Mp_SerID.CreateInstance (_ _ uuidof (Parameter))

Mp_DesCont.CreateInstance (_ _ uuidof (Parameter))

Mp_tranFlag.CreateInstance (_ _ uuidof (Parameter))

Mp_bankCardNo.CreateInstance (_ _ uuidof (Parameter))

Mp_bankGroupNo.CreateInstance (_ _ uuidof (Parameter))

Mp_bankFlowNo.CreateInstance (_ _ uuidof (Parameter))

Mp_DevName.CreateInstance (_ _ uuidof (Parameter))

Mp_ExeCount.CreateInstance (_ _ uuidof (Parameter))

/ / 2.2.3.2 append the database parameter to the end of the parameter attribute of the command variable handle

/ / append parameterPtr set to _ CommandPtr parameters lists

/ / Database parameter = command variable handle-> create parameter method (_ bstr_t ("stored procedure parameter name"), stored procedure parameter data type, stored procedure parameter input and output type, default size, variable parameter value)

Mp_dotype=m_pCommand- > CreateParameter (_ bstr_t ("dotype"), adInteger,adParamInput,-1,vv_dotype); / / Integer type

MSecretpCommand-> Parameters- > Append (mp_dotype)

Mp_TranNo=m_pCommand- > CreateParameter (_ bstr_t ("TranNo"), adVarChar,adParamInput,32,vv_TranNo); / / string type

MSecretpCommand-> Parameters- > Append (mp_TranNo)

Mp_devID=m_pCommand- > CreateParameter (_ bstr_t ("devID"), adVarChar,adParamInput,20,vv_devID)

MSecretpCommand-> Parameters- > Append (mp_devID)

Mp_TranDate=m_pCommand- > CreateParameter (_ bstr_t ("TranDate"), adVarChar,adParamInput,25,vv_TranDate); / / time type

MSecretpCommand-> Parameters- > Append (mp_TranDate)

Mp_TranTime=m_pCommand- > CreateParameter (_ bstr_t ("TranTime"), adVarChar,adParamInput,25,vv_TranTime)

MSecretpCommand-> Parameters- > Append (mp_TranTime)

Mp_RetCode=m_pCommand- > CreateParameter (_ bstr_t ("RetCode"), adVarChar,adParamInput,20,vv_RetCode)

MSecretpCommand-> Parameters- > Append (mp_RetCode)

Mp_BusType=m_pCommand- > CreateParameter (_ bstr_t ("BusType"), adInteger,adParamInput,-1,vv_BusType)

MSecretpCommand-> Parameters- > Append (mp_BusType)

Mp_CardNo=m_pCommand- > CreateParameter (_ bstr_t ("CardNo"), adVarChar,adParamInput,20,vv_CardNo)

MSecretpCommand-> Parameters- > Append (mp_CardNo)

Mp_IDCard=m_pCommand- > CreateParameter (_ bstr_t ("IDCard"), adVarChar,adParamInput,20,vv_IDCard)

MSecretpCommand-> Parameters- > Append (mp_IDCard)

Mp_Name=m_pCommand- > CreateParameter (_ bstr_t ("Name"), adVarChar,adParamInput,10,vv_Name)

MSecretpCommand-> Parameters- > Append (mp_Name)

Mp_Amt=m_pCommand- > CreateParameter (_ bstr_t ("Amt"), adDecimal,adParamInput,10,vv_Amt); / / floating point type

Mp_Amt- > NumericScale = 2; / / set the number of decimal places

Mp_Amt- > Precision = 10; / / set integer digits

MSecretpCommand-> Parameters- > Append (mp_Amt)

Mp_Notes=m_pCommand- > CreateParameter (_ bstr_t ("Notes"), adVarChar,adParamInput,2000,vv_Notes)

MSecretpCommand-> Parameters- > Append (mp_Notes)

Mp_SerID=m_pCommand- > CreateParameter (_ bstr_t ("SerID"), adVarChar,adParamInput,20,vv_SerID)

MSecretpCommand-> Parameters- > Append (mp_SerID)

Mp_DesCont=m_pCommand- > CreateParameter (_ bstr_t ("DesCont"), adVarChar,adParamInput,2000,vv_DesCont)

MSecretpCommand-> Parameters- > Append (mp_DesCont)

Mp_tranFlag=m_pCommand- > CreateParameter (_ bstr_t ("tranFlag"), adInteger,adParamInput,-1,vv_tranFlag)

MSecretpCommand-> Parameters- > Append (mp_tranFlag)

Mp_bankCardNo=m_pCommand- > CreateParameter (_ bstr_t ("bankCardNo"), adVarChar,adParamInput,25,vv_bankCardNo)

MSecretpCommand-> Parameters- > Append (mp_bankCardNo)

Mp_bankGroupNo=m_pCommand- > CreateParameter (_ bstr_t ("bankGroupNo"), adVarChar,adParamInput,12,vv_bankGroupNo)

MSecretpCommand-> Parameters- > Append (mp_bankGroupNo)

Mp_bankFlowNo=m_pCommand- > CreateParameter (_ bstr_t ("bankFlowNo"), adVarChar,adParamInput,12,vv_bankFlowNo)

MSecretpCommand-> Parameters- > Append (mp_bankFlowNo)

Mp_DevName=m_pCommand- > CreateParameter (_ bstr_t ("DevName"), adVarChar,adParamInput,40,vv_DevName)

MSecretpCommand-> Parameters- > Append (mp_DevName)

Mp_ExeCount=m_pCommand- > CreateParameter (_ bstr_t ("ExeCount"), adInteger,adParamOutput,-1,vv_ExeCount); / / output type

MSecretpCommand-> Parameters- > Append (mp_ExeCount)

/ / 2.2.4 get the result by execution

_ variant_t vNull

VNull.vt = VT_ERROR

VNull.scode = DISP_E_PARAMNOTFOUND

/ / 2.2.4.1 execute database stored procedures

M_pRecordset = mSecretpCommand-> Execute (& vNull,&vNull,adCmdStoredProc); / / adCmdStoredProc do not change

/ / the result of executing SQL in m_pRecordset can be used to determine the success and the cause of error.

If (mp_ExeCount- > Value! = 0)

{

Ct.SaveLog ("failed to insert data", 0, ")

}

Else

{

Ct.SaveLog ("data inserted successfully", 0, ")

}

}

Catch (_ com_error & err)

{

If (pMyConnect- > State) pMyConnect- > Close ()

PMyConnect = NULL

CoUninitialize ()

}

/ / 2.2.5 close the connection and release resources

If (pMyConnect- > State) pMyConnect- > Close ()

PMyConnect = NULL

CoUninitialize (); / / remember to call whether it succeeds or not to release resources

Return

}

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 209

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Database

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report