Click here to Skip to main content
12,446,146 members (76,907 online)
Click here to Skip to main content
Add your own
alternative version

Stats

274.8K views
5.3K downloads
65 bookmarked
Posted

Using the CDatabase class to read an Access databases

, 29 Mar 2001
Rate this:
Please Sign up or sign in to vote.
This is a very simple code snippet that demonstrates how to read a Microsoft Access database file using the CDatabase class

Sample Image - ReadDB.gif

Introduction

This is a very simple code snippet that demonstrates how to read a Microsoft Access database using the CDatabase class.

The main features it demonstrates are:

  • Retrieving data from Microsoft Access database
  • Connecting without the need for an ODBC data source to be set up.
  • Populate a List view Control with the data
//
// Part of the source code
void CReadDBDlg::OnRead() 
{
	// TODO: Add your control notification handler code here
	CDatabase database;
	CString SqlString;
	CString sCatID, sCategory;
	CString sDriver = "MICROSOFT ACCESS DRIVER (*.mdb)";
	CString sDsn;
	CString sFile = "d:\\works\\ReadDB\\Test.mdb";
	// You must change above path if it's different
	int iRec = 0; 	
	
	// Build ODBC connection string
	sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s",sDriver,sFile);
	TRY
	{
		// Open the database
		database.Open(NULL,false,false,sDsn);
		
		// Allocate the recordset
		CRecordset recset( &database );

		// Build the SQL statement
		SqlString =  "SELECT CatID, Category "
				"FROM Categories";

		// Execute the query
		recset.Open(CRecordset::forwardOnly,SqlString,CRecordset::readOnly);
		// Reset List control if there is any data
		ResetListControl();
		// populate Grids
		ListView_SetExtendedListViewStyle(m_ListControl,LVS_EX_GRIDLINES);
 
		// Column width and heading
		m_ListControl.InsertColumn(0,"Category Id",LVCFMT_LEFT,-1,0);
		m_ListControl.InsertColumn(1,"Category",LVCFMT_LEFT,-1,1);
		m_ListControl.SetColumnWidth(0, 120);
		m_ListControl.SetColumnWidth(1, 200);

		// Loop through each record
		while( !recset.IsEOF() )
		{
			// Copy each column into a variable
			recset.GetFieldValue("CatID",sCatID);
			recset.GetFieldValue("Category",sCategory);

			// Insert values into the list control
			iRec = m_ListControl.InsertItem(0,sCatID,0);
			m_ListControl.SetItemText(0,1,sCategory);

			// goto next record
			recset.MoveNext();
		}
		// Close the database
		database.Close();
	}
	CATCH(CDBException, e)
	{
		// If a database exception occured, show error msg
		AfxMessageBox("Database error: "+e->m_strError);
	}
	END_CATCH;
}
	
// Reset List control
void CReadDBDlg::ResetListControl()
{
	m_ListControl.DeleteAllItems();
	int iNbrOfColumns;
	CHeaderCtrl* pHeader = (CHeaderCtrl*)m_ListControl.GetDlgItem(0);
	if (pHeader)
	{
		iNbrOfColumns = pHeader->GetItemCount();
	}
	for (int i = iNbrOfColumns; i >= 0; i--)
	{
		m_ListControl.DeleteColumn(i);
	}
}

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

zhaque
Web Developer
Australia Australia
No Biography provided

You may also be interested in...

Pro
Pro

Comments and Discussions

 
QuestionCharacter truncation if switching to Unicode in Memo fields Pin
dlavrantonis15-Oct-13 4:11
memberdlavrantonis15-Oct-13 4:11 
Questionconnect to mdf sql database Pin
Mahdi Nejadsahebi20-Dec-12 0:26
memberMahdi Nejadsahebi20-Dec-12 0:26 
QuestionUsing the CDatabase class to read an Access databases-->write Pin
Member 942749014-Sep-12 21:13
memberMember 942749014-Sep-12 21:13 
GeneralMy vote of 5 Pin
Mahdi Nejadsahebi27-Apr-12 19:15
groupMahdi Nejadsahebi27-Apr-12 19:15 
GeneralError messages in running Using the CDatabase class to read an Access databases Pin
shiphy21-Mar-10 20:03
membershiphy21-Mar-10 20:03 
GeneralRe: Too much in Try/Catch [modified] Pin
shiphy19-Mar-10 11:15
membershiphy19-Mar-10 11:15 
GeneralToo much in Try/Catch Pin
William Winner19-Mar-10 9:49
memberWilliam Winner19-Mar-10 9:49 
GeneralHaving problems showing data in my Access Database in the List Control Pin
shiphy19-Mar-10 9:18
membershiphy19-Mar-10 9:18 
GeneralDatabase Error [modified] Pin
Member 379530429-Jun-08 19:24
memberMember 379530429-Jun-08 19:24 
GeneralRe: Database Error Pin
zhaque3-Feb-10 14:00
memberzhaque3-Feb-10 14:00 
GeneralDataBase Error Pin
Member 379530429-Jun-08 19:22
memberMember 379530429-Jun-08 19:22 
GeneralThank you very much Pin
jellow27-Feb-08 8:49
memberjellow27-Feb-08 8:49 
QuestionHow to use Other databases Like "SQL"" Pin
rag84dec21-May-07 20:27
memberrag84dec21-May-07 20:27 
QuestionRe: Multiple table help, please? Pin
mla15427-Feb-07 6:08
membermla15427-Feb-07 6:08 
QuestionAccess file creation Pin
Arum M S17-Jan-07 18:28
memberArum M S17-Jan-07 18:28 
QuestionIn modal dglboxes? Pin
swapna_signsin11-May-06 0:22
memberswapna_signsin11-May-06 0:22 
Generalc/c++ with sql/access database Pin
Anonymous5-Oct-05 22:35
sussAnonymous5-Oct-05 22:35 
Generalunresolved external symbol Pin
WinAPILearner31-Oct-04 11:44
memberWinAPILearner31-Oct-04 11:44 
GeneralRe: unresolved external symbol Pin
Anonymous18-Feb-05 10:46
sussAnonymous18-Feb-05 10:46 
GeneralRe: unresolved external symbol Pin
zhaque31-Oct-05 7:25
memberzhaque31-Oct-05 7:25 
GeneralBound error Pin
viva dotnet18-Oct-04 11:24
memberviva dotnet18-Oct-04 11:24 
AnswerRe: Bound error Pin
liuxiaop12-Feb-07 2:43
memberliuxiaop12-Feb-07 2:43 
Generaldatabase + listcontrol Pin
sakesh16-Sep-04 20:50
membersakesh16-Sep-04 20:50 
QuestionUnicode? Pin
Badaa25-Apr-04 2:19
memberBadaa25-Apr-04 2:19 
AnswerRe: Unicode? Pin
nvoigt27-Jul-04 23:07
membernvoigt27-Jul-04 23:07 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.160811.3 | Last Updated 30 Mar 2001
Article Copyright 2001 by zhaque
Everything else Copyright © CodeProject, 1999-2016
Layout: fixed | fluid