C++连接Access数据库

本文展示了一个使用ADO(ActiveX Data Objects)通过C++连接并读取Access数据库的示例程序。该程序首先初始化COM环境,然后创建数据库连接对象,并打开指定的Access数据库文件。接着,它执行SQL查询来获取表中的所有记录,并将结果打印到控制台。
#include <iostream>
using namespace std;
/*#import生成文件 msado15.tlh,默认是有namespace ADODB {}所有内容都包在这个名字空间中。
用了no_namespace则生成的头文件中没有namespace,所有内容是全局的,否则ADODB.Connection
rename的意思就是改名了,rename("EOF","adoEOF")将EOF改名为adoEOF,以免和C语言里的EOF重名*/
#import "c:\program files\common files\system\ado\msado15.dll"  no_namespace  rename ("EOF", "adoEOF")

void main()
{
	CoInitialize(NULL);         //初始化OLE/COM库环境
	//在引入ado并初始化成功com库后,就可以使用智能指针了
	_ConnectionPtr m_pConnection;  
	_RecordsetPtr m_pRecordset;  
	HRESULT hr;
    try
    {
		hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
   //     hr = m_pConnection.CreateInstance(__uuidof(Connection));//no_namespace的好处
		
        if(SUCCEEDED(hr))
        {            
            hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb","","",adModeUnknown);          //access2003
//			hr = m_pConnection->Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=test.accdb","","",adModeUnknown);    //access2007
			printf("成功连接数据库\n");
        }
    }
    catch(_com_error e)///捕捉异常
    {       
       printf("连接数据库失败!\n");
	   return ;
    }
		m_pRecordset.CreateInstance(__uuidof(Recordset)); //实例化结果集对象   
	//执行sql语句   
		try  
		{   
			char sql[300];   
			memset(sql,0,300);   
			strcat(sql,"SELECT * FROM lyrtest");     
			m_pRecordset->Open(sql, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);   
		}   
		catch(_com_error* e)   
		{   
			wprintf(e->ErrorMessage());   
			if(m_pConnection->State)   
			{   
					m_pConnection->Close();   
					m_pConnection= NULL;   
			}
			CoUninitialize();
			return;   
		}   
		try  
		{      
			//若结果为空,结束   
			if(m_pRecordset->BOF)   
			{   
					printf("表内数据为空!");   
					if(m_pConnection->State)   
					{   
							m_pRecordset->Close();   
							m_pRecordset = NULL;   
							m_pConnection->Close();   
							m_pConnection= NULL;   
					}  
					CoUninitialize();
					return;   
			}   
			cout<<"---------------------------------"<<endl;
			cout<<"数据库的内容为:"<<endl;
			//游标定位到第一条记录
			m_pRecordset->MoveFirst(); 
			_variant_t var[2]; //从结果集中取出的数据放到var中
			char *t1[2]; 
			while(!m_pRecordset->adoEOF)
			{   
					var[0]= m_pRecordset->GetCollect("ID");   
					if(var[0].vt != VT_NULL)   
					{   
							t1[0] = _com_util::ConvertBSTRToString((_bstr_t)var[0]);   
					}   
					printf(t1[0]);
					printf("\t");
					var[1]= m_pRecordset->GetCollect("Name");   
					if(var[1].vt != VT_NULL)   
					{   
						t1[1] = _com_util::ConvertBSTRToString((_bstr_t)var[1]);   
					} 
					printf(t1[1]);
					printf("\n");   
					m_pRecordset->MoveNext();   
			}   
		}   
		catch(_com_error *e)   
		{   
			wprintf(e->ErrorMessage());   
		}   
	
		//退出程序时的处理   
		if(m_pConnection->State)
		{   
			m_pRecordset->Close();   
			m_pRecordset = NULL;   
			m_pConnection->Close();   
			m_pConnection= NULL;   
		} 
	CoUninitialize();		
	cout<<"---------------------------------"<<endl;
	return; 
}

### 如何在 Windows 系统中安装 PythonQt Designer 并配置环境 #### 安装 PyQt6 和 Qt Designer 为了在 Windows 上使用 Qt Designer,可以通过 `pip` 命令安装最新的 PyQt6 模块。PyQt6 是一个用于创建图形用户界面 (GUI) 应用程序的工具包,并附带了 Qt Designer 工具。 运行以下命令可以完成 PyQt6 及其相关组件的安装: ```bash pip install pyqt6-tools ``` 此命令会自动下载并安装必要的依赖项,其中包括 Qt Designer[^1]。 #### 配置路径以便访问 Qt Designer 安装完成后,通常可以在以下目录找到 Qt Designer 文件(具体位置取决于 Python 解释器的位置): - **对于标准安装**:`C:\Users\<用户名>\AppData\Local\Programs\Python\<版本号>\Lib\site-packages\pyqt6_tools` - 或者通过脚本启动:`python -m pyqt6_designer`. 如果希望直接从文件资源管理器或桌面快捷方式打开 Qt Designer,则需将其可执行文件所在路径添加到系统的环境变量 PATH 中。操作方法如下: 1. 打开控制面板 -> 系统和安全 -> 系统 -> 高级系统设置。 2. 单击“环境变量”,在“系统变量”部分找到名为 “Path”的条目并编辑它。 3. 添加上述提到的设计工具所在的完整路径至列表末尾。 这样处理之后,在任意 CMD 终端窗口输入 designer.exe 就能调用该应用程序。 #### 测试安装成功与否 验证是否正确设置了所有内容的一个简单办法就是尝试加载设计模式本身或者利用 PyQT 创建一个小项目来看看能否正常渲染 UI 元素。下面给出一段简单的例子展示如何载入由设计师保存下来的 .ui 文件并通过 python 运行起来: ```python from PyQt6 import uic import sys from PyQt6.QtWidgets import QApplication, QMainWindow class MyUI(QMainWindow): def __init__(self): super(MyUI,self).__init__() # 加载 ui 文件 uic.loadUi('your_ui_file.ui', self) if __name__ == '__main__': app = QApplication(sys.argv) window = MyUI() window.show() try: sys.exit(app.exec()) except SystemExit: pass ``` 以上代码片段假设存在一个叫做 'your_ui_file.ui' 的文件位于当前工作目录下,它是之前通过 Qt Designer 构建出来的界面布局定义文档。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值