要操作SQL数据库要经过以下几个步骤:
建立数据库
配置数据源
数据库的连接
最后就可以对数据库里面的数据进行查改删了
SQL Server Management Studio,根据自己的需要建立数据库
【2】配置数据源
数据库设计完成后,我们并不能直接的去访问它,必须通过配置数据源让应用程序和数据库之间建立连接,直白点就是为数据库创建一个接口,让程序通过这个窗口去操作数据库。
1.打开控制面板-》管理工具-》数据源(ODBC)

点击添加

选择数据源驱动

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

登录验证

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

设置完成
【3】数据库的连接
到了MFC的阶段了,首先建立一个MFC工程,放置两个按钮,对两个按钮实现消息响应,一个名称为“连接数据库”,一个为“查询数据库信息”。
afxdb.h头文件。
CDatabase m_db; CRecordset rs;
“连接数据库”按钮的消息响应函数代码如下
1. 连接数据库按钮代码//
2. TRY
3. {
4. "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. "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. "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. "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;
}
















