利用ODBC连接数据库


例子用到的数据库是MySql

添加数据源



创建MFC 基佬于对话框的工程ODBC

在工程里添加头文件

#include "afxdb.h"

创建CDatabase类的对象

CDatabase   db;

接下来就是连接数据库了,在OnInitDialog函数里添加

	//判断数据库是否打开
	if(!db.IsOpen())
	{
		//连接数据库,两种open方式
		BOOL  flag=db.Open("test",FALSE,FALSE,"ODBC;UID=root;PWD=2009101185");
//		BOOL  flag=db.Open("test");
		if(!flag)
		{
			MessageBox("打开数据库失败!");
			return FALSE;
		}
		else
		{
			MessageBox("打开数据库成功!");
		}
	}

接着在对话框中添加一个List Control控件,用来显示数据库表中的内容,为控件关联一个变量m_list

	//设置ListControl控件的状态
	m_list.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);


	m_list.InsertColumn(0,"",LVCFMT_CENTER,0);
	m_list.InsertColumn(1,"编号",LVCFMT_CENTER,195);
	m_list.InsertColumn(2,"姓名",LVCFMT_CENTER,195);
        m_list.DeleteColumn(0);
我用来测试的数据库表中只有两个字段,因为MFC不允许修改List Control控件第一列的状态,所以可以通过上面的方式去让界面上的第一列居中(实际是我创建的第二列)

接下来,实例化CRecordset类,CRecordset类代表一个记录集,是MFC的ODBC类中最重要、功能最强大的类。

CRecordset   db_recordset(&db);

接下来就来执行一条SELECT语句,并把结果显示在List Control中

	CString      str="select * from dept";

	//执行"select * from dept"语句
	db_recordset.Open(CRecordset::forwardOnly,str);

在MSDN里对 CRecordset::Open函数的第二个参数有这样一句描述

  • An SQL SELECT statement (optionally with an SQL WHERE orORDER BY clause).

所以在CRecordset::Open函数只能执行SELECT语句,其它的语句可用CDatabase::ExecuteSQL函数
接下来就是获取查询到的结果了
//获取查询结果,并将结果显示在ListControl控件里
	for(int i=0;!db_recordset.IsEOF()&&!db_recordset.IsBOF();i++)
	{
		db_recordset.GetFieldValue((short)0,str);
		m_list.InsertItem(i,str);
		db_recordset.GetFieldValue((short)1,str);
		m_list.SetItemText(i,1,str);

		db_recordset.MoveNext();
	}
	db_recordset.Close();

不要忘记调用Close函数关闭CRecordset对象
最后就是关闭CDatabase对象了
db.Close();
完整代码运行结果如下,添加了增、删、查、改四个功能




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值