MFC连接SQL数据库操作

要操作SQL数据库要经过以下几个步骤:

1.建立数据库

2.配置数据源

3.数据库的连接

最后就可以对数据库里面的数据进行查改删了

 

【1】对于建立SQL数据库的话,可以通过SQL Server Management Studio,根据自己的需要建立数据库

【2】配置数据源

数据库设计完成后,我们并不能直接的去访问它,必须通过配置数据源让应用程序和数据库之间建立连接,直白点就是为数据库创建一个接口,让程序通过这个窗口去操作数据库。

1.打开控制面板-》管理工具-》数据源(ODBC)

点击添加

 

选择数据源驱动

 

输入数据源名称和选择SQL服务器

 

登录验证

 

选择数据库-》要操作的是哪个数据库就选择哪个数据库,这里我拿master数据库做为实例

 

设置完成

【3】数据库的连接

         到了MFC的阶段了,首先建立一个MFC工程,放置两个按钮,对两个按钮实现消息响应,一个名称为“连接数据库”,一个为“查询数据库信息”。

因为要使用到CDatabase类所以需要在stdafx.h中包含afxdb.h头文件。

在Dlg类中定义两个变量 CDatabase m_db; CRecordset rs;

“连接数据库”按钮的消息响应函数代码如下

[cpp]  view plain copy
  1. 连接数据库按钮代码//  
  2.  TRY   
  3.  {      
  4.   m_db.OpenEx(_T("DSN=Test;"),CDatabase::noOdbcDialog);//连接到一个名为Test的数据源  
  5.   rs.m_pDatabase = &m_db;   
  6.  }  
  7.  //处理异常消息  
  8.  CATCH(CDBException,ex)  
  9.  {      
  10.   AfxMessageBox(ex->m_strError);  
  11.   AfxMessageBox(ex->m_strStateNativeOrigin);   
  12.  }   
  13.  AND_CATCH(CMemoryException,pEx)   
  14.  {    pEx->ReportError();   
  15.  AfxMessageBox(_T("memory exception"));   
  16.  } AND_CATCH(CException,ex)   
  17.  {      
  18.   TCHAR szError[100];      
  19.   ex->GetErrorMessage(szError,100);      
  20.   AfxMessageBox(szError);   
  21.  }   
  22.  END_CATCH  
  23.    
  24.    
  25. “查询数据库信息”按钮的消息响应函数代码如下  
  26. 查询数据库信息//  
  27. CString sql = _T("SELECT name FROM spt_values WHERE (number=1)");      
  28.   //要执行的SQL语句         
  29.  CString psd;      
  30.  //存放查询结果  
  31.  TRY        
  32.  {       
  33.  rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql);  
  34.   //打开查询记录       
  35.  rs.GetFieldValue(_T("name"),psd);         
  36.   //得到数据                    
  37.  }       
  38.  CATCH(CDBException,ex)        
  39.  {            
  40.   AfxMessageBox(ex->m_strError);   
  41.   AfxMessageBox(ex->m_strStateNativeOrigin);        
  42.  }           
  43.  AND_CATCH(CMemoryException,pEx)   
  44.  {            
  45.   pEx->ReportError();            
  46.   AfxMessageBox(_T("memory exception"));     
  47.  }  
  48.  END_CATCH  
  49.  MessageBox(psd);  
 

先点击“连接数据库按钮代码”然后点击“查询数据库信息”,可以看到弹出你所查询到信息,关于SQL语句方面的话大家可以看SQL基础,还有其他的删除增加表等操作那就比较简单了,大家可以自己设计一下。

这里为了节省时间,只是给出了实现方法。

具体的思路大家可以自己设计,比如把连接数据库操作放到 对话框初始化菜单,然后设置查询对话框跟复选框来进行功能选择,把获取到的信息放到树里面或者LIST等控件里面。



MFC中数据库的操作

1,看你使用什么数据库,使用SQL Server你要先安装相应的数据库管理软件,如SQL Server 2000或2003.使用access就不用安装了。另外数据库要先建好。

 

2,配置好数据源,在控制面板》管理工具》ODBC数据源里配置。

具体的步骤你上网查下,都有。

 

3,数据库在MFC中主要靠两个类来操作CDatabase和CRecordSet。

CDatabase用来执行非select语句,CRecordSet用来执行select语句,保存返回的结果数据,你可以把它看成一张二维表,存有很多条数据,不熟悉SQL的话你得看下SQL语句。

具体使用时先实例化CDatabase:

CDatabase m_db;

然后 CRecordSet *m_set = new CRecordSet(&m_db);

3.1 打开数据库

try

{

m_db.open("文件全路径",FALSE, FALSE, "ODBC", FALSE);

}

catch(CDBException e)

{

// 编写处理异常代码

}

3.2 查询数据库

if (m_set->IsOpen())

m_set->Close();

try

{

CString sql = select语句;如select * from information。information为表名。

m_set->Open(CRecordset::dynaset,sql); // dynaset为查询方式,你照写就行,具体的到msdn上看看。

}

catch(CDBException e)

{

MessageBox("表中没有数据 !");

return;

}

catch(CMemoryException e)

{

MessageBox("表中没有数据 !");

return;

}

// 获取数据字段, 字段就是像"姓名", "年龄"这类信息

CODBCFieldInfo fi;

short nfield = m_set->GetODBCFieldCount();

for (int i=0; i<nfield; i++)

{

m_set->GetODBCFieldInfo(i, fi);

fi.m_strName成员包含字段名称,比如"姓名";

]

//获取字段对应的信息

CString strValue;

m_set->MoveFirst();

while(0 == m_set->IsEOF())

{

// 遍历每一条数据

for (int i=0; i<nfield; i++)

{

m_set->GetFieldValue(i, strValue); // 注意这里strValue前不加&符号,传入的是CString类的引用。

// 获得字段对应的数据后自行处理,可以显示出来等等。

}

m_set->MoveNext();

}

3.3 执行SQL语句

try

{

CString sql = SQL语句;如delete from information。

m_db.ExecuteSQL(sql);

}

catch(CDBException e)

{

MessageBox("Executation of the SQL Failed !","Error",MB_ICONERROR);

return;

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值