Although it is relatively simple, it is still a bit complicated for beginners. record it. Write a class for C ++ database operations.
1 ADOConn. h
01 # if! Defined (afx_adoconn_h000056a56674_91dc_43bb_bd09_9a0c8995161e00000000ded _)
02 # define afx_adoconn_hsf-56a56674_91dc_43bb_bd09_9a0c8995161e00000000ded _
03
04 # import "C: \ Program Files \ Common Files \ System \ ado \ msado15.dll" no_namespace \
05 rename ("EOF", "adoEOF") rename ("BOF", "adoBOF ")
06 # if _ MSC_VER> 1000
07 # pragma once
08 # endif // _ MSC_VER> 1000
09 class ADOConn
10 {
11 public:
12 ADOConn (void );
13 ~ ADOConn (void );
14
15
16 // Add a pointer to the Connection object
17 _ ConnectionPtr m_pConnection;
18 // Add a pointer to the Recordset object
19 _ RecordsetPtr m_pRecordset;
20 // _ RecordsetPtr & GetRecordSet (_ bstr_t bstrSQL );
21/* // close the ADO class for future use */
22 void OnInitADOConn (void );
23 void ExitConnect (void );
24 // open the record set
25 _ RecordsetPtr & GetRecordSet (_ bstr_t bstrSQL );
26 };
27 # endif //! Defined (afx_adoconn_h000056a56674_91dc_43bb_bd09_9a0c8995161e00000000ded _)
ADOConn. cpp
01 # include "StdAfx. h"
02 # include "ADOConn. h"
03
04
05 ADOConn: ADOConn (void)
06 {
07}
08
09
10 ADOConn ::~ ADOConn (void)
11 {
12}
13
14
15 /// close the ADO class for future use
16 void ADOConn: OnInitADOConn (void)
17 {
18: CoInitialize (NULL );
19 try
20 {
21 // create a connection object
22 m_pConnection.CreateInstance ("ADODB. Connection ");
23 // set the connection string
24 _ bstr_t strConnect = "uid =; pwd =; DRIVER = {Microsoft Access Driver (*. mdb)}; DBQ = Grades. mdb ;";
25 // set the SERVER and UID and PWD according to the actual situation"
26/* m_pConnection-> Open (strConnect, _ T ("admin"), _ T ("owenyang"), adModeUnknown );*/
27 m_pConnection-> Open (strConnect, "admin", "owenyang", adModeUnknown );
28}
29 catch (_ com_error e)
30 {
31 // Display error message
32 AfxMessageBox (e. Description ());
33}
34}
35
36
37 void ADOConn: ExitConnect (void)
38 {
39 // close the record set and Connection
40 if (m_pRecordset! = NULL)
41 {
42 m_pRecordset-> Close ();
43
44}
45 m_pConnection-> Close ();
46: CoUninitialize ();
47}
48
49
50 // open the record set
51 _ RecordsetPtr & ADOConn: GetRecordSet (_ bstr_t bstrSQL)
52 {
53 // TODO: insert return statement here
54 try
55 {
56 if (m_pConnection = NULL)
57 {
58 OnInitADOConn ();
59}
60 // create record object
61 m_pRecordset.CreateInstance (_ uuidof (Recordset ));
62 // retrieve table records
63 m_pRecordset-> Open (bstrSQL, m_pConnection.GetInterfacePtr (), adOpenDynamic,
64 adLockOptimistic, ad1_text );
65}
66 catch (_ com_error e)
67 {
68 e. Description ();
69}
70 return m_pRecordset;
71}
ReadAccessToList. cpp
View source
Print?
01 void CTypeHistoryDlg: readAccessToList (void)
02 {
03 CRect rect;
04 GetClientRect (& rect );
05 int gridWidth = (rect. Width ()-15)/11;
06/* CString tem = _ T ("try ");
07 tem. Format (_ T ("% d"), gridWidth );*/
08 // MessageBox (tem );
09 m_historyList.InsertColumn (0, _ T ("no."), LVCFMT_CENTER, gridWidth-10 );
10 m_historyList.InsertColumn (1, _ T ("date"), LVCFMT_CENTER, gridWidth + 25 );
11 m_historyList.InsertColumn (2, _ T ("number of segments"), LVCFMT_CENTER, gridWidth + 10 );
12 m_historyList.InsertColumn (3, _ T ("Speed"), LVCFMT_CENTER, gridWidth );
13 m_historyList.InsertColumn (4, _ T (""), LVCFMT_CENTER, gridWidth );
14 m_historyList.InsertColumn (5, _ T (""), LVCFMT_CENTER, gridWidth );
15 m_historyList.InsertColumn (6, _ T ("code length"), LVCFMT_CENTER, gridWidth );
16 m_historyList.InsertColumn (7, _ T ("error"), LVCFMT_CENTER, gridWidth );
17 m_historyList.InsertColumn (8, _ T ("Words"), LVCFMT_CENTER, gridWidth );
18 m_historyList.InsertColumn (9, _ T ("Key count"), LVCFMT_CENTER, gridWidth );
19 m_historyList.InsertColumn (10, _ T (""), LVCFMT_CENTER, gridWidth );
20 m_historyList.SetExtendedStyle (LVS_EX_FLATSB
21 | LVS_EX_FULLROWSELECT
22 | LVS_SHOWSELALWAYS
23 | LVS_EX_GRIDLINES );
24 ADOConn m_AdoConn;
25 m_AdoConn.OnInitADOConn ();
26 CString SQL;
27 SQL. Format (_ T ("select * from grade "));
28 _ RecordsetPtr m_pRecordset;
29 m_pRecordset = m_AdoConn.GetRecordSet (_ bstr_t) SQL );
30 while (m_AdoConn.m_pRecordset-> adoEOF = 0)
31 {
32 m_historyList.InsertItem (0, _ T (""));
33 m_historyList.SetItemText (0, 1, (TCHAR *) (_ bstr_t) m_pRecordset-> GetCollect ("date "));
34 m_historyList.SetItemText (0, 2, (TCHAR *) (_ bstr_t) m_pRecordset-> GetCollect ("para "));
35 m_historyList.SetItemText (0, 3, (TCHAR *) (_ bstr_t) m_pRecordset-> GetCollect ("speed "));
36 m_historyList.SetItemText (0, 4, (TCHAR *) (_ bstr_t) m_pRecordset-> GetCollect ("back "));
37 m_historyList.SetItemText (0, 5, (TCHAR *) (_ bstr_t) m_pRecordset-> GetCollect ("hitkey "));
38 m_historyList.SetItemText (0, 6, (TCHAR *) (_ bstr_t) m_pRecordset-> GetCollect ("keylong "));
39 m_historyList.SetItemText (0, 7, (TCHAR *) (_ bstr_t) m_pRecordset-> GetCollect ("wronwor "));
40 m_historyList.SetItemText (0, 8, (TCHAR *) (_ bstr_t) m_pRecordset-> GetCollect ("wordscount "));
41 m_historyList.SetItemText (0, 9, (TCHAR *) (_ bstr_t) m_pRecordset-> GetCollect ("keycount "));
42 m_historyList.SetItemText (0, 10, (TCHAR *) (_ bstr_t) m_pRecordset-> GetCollect ("time "));
43 m_historyList.SetItemText (0, 0, (TCHAR *) (_ bstr_t) m_pRecordset-> GetCollect ("id "));
44 m_pRecordset-> MoveNext ();
45}
46 m_historyList.SetItemState (0, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED );
47 m_AdoConn.ExitConnect ();
48}
Author: owenyang