⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 database.cpp

📁 一个作的很好的dao数据库开发
💻 CPP
字号:
// database.cpp -- MFC DAO Database specific functions
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1998 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.

//
// contains the functions that deal directly with DAODatabase
// creation, opening and closing:
//
// void closeDatabase(CDaoDatabase **ppDatabase);
//
// int openDatabase(CDaoDatabase **ppDatabase, CString fileName,
//                BOOL bReportNoOpen = TRUE);
//
// BOOL createDatabase(CDaoDatabase **ppDatabase, CString fileName,
//                int dwOptions = 0);

#include "stdafx.h"
#include "database.h"

// close the database and destruct it
// IN/OUT:: ppDatabase--pointer to pointer to database to close and
// destruct
void closeDatabase(CDaoDatabase **ppDatabase)
{
	// only process if the database object exists
	if (*ppDatabase != NULL)
	{
		if ((*ppDatabase)->IsOpen())
			(*ppDatabase)->Close();

		// closing doesn't delete the object
		delete *ppDatabase;
		*ppDatabase = NULL;
	}
}

// open the database from a file (close if necessary)
// IN/OUT: ppDatabase--pointer to pointer to database object
// IN: fileName--name of .mdb file to open
// IN: bReportNoOpen--TRUE by default, if true, if open fails
//     because the specified MDB file doesn't exist, report that
//     fact to the user.  Note: other errors are reported always
// RETURN: 1 if success, 0 if non-fatal failure, -1 if fatal failure
int openDatabase(CDaoDatabase **ppDatabase, CString fileName,
				  BOOL bReportNoOpen /* = TRUE */)
{
	// initialize success indicator
	int nReturnCode = 1;

	// close and delete if necessary
	if (*ppDatabase != NULL)
	{
		if ((*ppDatabase)->IsOpen())
			closeDatabase(ppDatabase);
		delete *ppDatabase;
	}

	// construct new database
	*ppDatabase = new CDaoDatabase;

	// failed to allocate
	if (ppDatabase == NULL)
		return -1; // fatal error

	// now open the database object with error checking
	try
	{
		(*ppDatabase)->Open(fileName);
	}
	catch (CDaoException *e)
	{
		// special case--couldn't find the file, so it may be because
		// user specified a new file to open
		if (e->m_pErrorInfo->m_lErrorCode == 3024)
		{
			if (bReportNoOpen)
			{
				// create a message to display
				CString message = _T("Couldn't open database--Exception: ");
				message += e->m_pErrorInfo->m_strDescription;

				// output status
				AfxMessageBox(message);
			}

			// indicate failure but not fatal
			nReturnCode = 0;
		}
		else // other type of DAO exception--always report
		{
			// create a message to display
			CString message = _T("Couldn't open database--Exception: ");
			message += e->m_pErrorInfo->m_strDescription;

			// output status
			AfxMessageBox(message);

			// indicate fatal error
			nReturnCode = -1;
		}

		// not rethrowing, so delete exception
		e->Delete();

		delete *ppDatabase;
		*ppDatabase = NULL;
	}
	catch (CMemoryException *e)
	{
		// output status
		AfxMessageBox(_T("Failed to open database--Memory exception thrown."));

		// not rethrowing, so delete exception
		e->Delete();

		delete *ppDatabase;
		*ppDatabase = NULL;

		// indicate fatal error
		nReturnCode = -1;
	}

	return nReturnCode;
}

// create the database file (close any open database)
// IN/OUT: ppDatabase--pointer to pointer to database object
// IN: fileName--name of .mdb file to open
// IN: dwOptions--info like version and encryption settings
//     0 by default
// RETURN: TRUE if success, FALSE if failure
BOOL createDatabase(CDaoDatabase **ppDatabase, CString fileName,
				  int dwOptions /* = 0 */)
{
	// initialize success indicator
	BOOL bSuccess = TRUE;

	// close and delete if necessary
	if (*ppDatabase != NULL)
	{
		if ((*ppDatabase)->IsOpen())
			closeDatabase(ppDatabase);
		delete *ppDatabase;
	}

	// construct new database
	*ppDatabase = new CDaoDatabase;

	// failed to allocate
	if (ppDatabase == NULL)
		return FALSE; // error

	// now create the database object with error checking
	try
	{
		// default language specified
		(*ppDatabase)->Create(fileName, dbLangGeneral, dwOptions);
	}
	catch (CDaoException *e)
	{
		// create a message to display
		CString message = _T("Couldn't create database--Exception: ");
		message += e->m_pErrorInfo->m_strDescription;

		// output status
		AfxMessageBox(message);

		// not rethrowing, so delete exception
		e->Delete();

		delete *ppDatabase;
		*ppDatabase = NULL;

		// failure
		bSuccess = FALSE;
	}
	catch (CMemoryException *e)
	{
		// output status
		AfxMessageBox(_T("Failed to create database--Memory exception thrown."));

		// not rethrowing, so delete exception
		e->Delete();

		delete *ppDatabase;
		*ppDatabase = NULL;

		// failure
		bSuccess = FALSE;
	}

	return bSuccess;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -