MFC中连接sql数据库的简单方法
2013-01-11 13:27
281 查看
1、建立数据库
这一步比较简单,直接打开SQL Server Management Studio,根据自己需要设计数据库中的表,及其之间的依赖关系等等!要想设计一个完美的数据库,就必须了解数据库的基本知识。这里不再具体说了。这里我们假设我们的数据库名字为Test01
2、配置数据源
数据库设计建立完成后,它只是单独的几张表,我们并不能在程序中去访问它,因为程序并不知道数据库在哪里。因此,就要在应用程序跟数据库之间建立连接。
配置数据源说通俗了就是为数据库创建一个对外的窗口,应用程序通过这个窗口来访问数据库中的数据。具体配置步骤为:
1)
打开
控制面板--〉管理工具--〉数据源,在用户DSN面板选择
“添加”
2)
在数据源驱动程序中选择 “SQL Server” --〉完成,即打开
“创建到SQL Server
的新数据源”
3)
在“数据源名称”中填入名称,我们填
TestSQL01,然后选择
服务器,在其中选择要连接到的SQL Server服务器。(如果你电脑的SQL
Server服务打开的话,就会有自己的主机名。或者选择网络上的某个SQL Server。
4)
点击
下一步
配置认证信息
5)
配置完后点击
下一步,
选中 “更改默认的数据库为”复选框,在下拉中选择自己刚才建立的要连接的数据库。
(这一步很重要,一般一个Server上会有多个数据库,如果不更改数据源的默认数据库,你
建立的数据源将连接到默认的数据库,这样就会造成程序中执行SQL语句时“对象名无效”的错误,即找不到你指定的数据表等)
6)
选择完数据库后直接
下一步--〉完成
就完成了数据源的配置。接下来会出现配置数据源的基本信息,可以通过 “测试数据源”来测试数据源是否配置成功。
3、
数据库的连接
建立完数据库,又配置好了数据源,接下来就可以在程序中通过数据源来访问数据库了。
1)
首先要在程序中引入MFC ODBC数据库的定义文件
#include <afxdb.h>
2)
定义CDataBase数据库对象,
CDataBase m_db;
3)
利用CDataBase类的OpenEx函数建立和数据库的连接;
m_db.OpenEx(_T("DSN=TestSQL01;"),CDatabase::noOdbcDialog);
/*这里的TestSQL01
即为步骤2中建立的数据源,然后根据OpenEx函数格式填入参数,主要是用户名、密码之类,这里没有设置,所以就没有*/
具体连接还要捕捉OpenEx可能抛出的异常:
TRY
{
m_db.OpenEx(_T("DSN=TestSQL01;"),CDatabase::noOdbcDialog);
rs.m_pDatabase = &m_db;
}
CATCH(CDBException,ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox(_T("memory exception"));
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox(szError);
}
END_CATCH
4、
数据库操作
在完成了上面的步骤后,就可以使用SQL语句对数据库进行操作了。基本的操作有
查询、添加、修改、删除等。这里主要说一下查询,其他操作都与添加步骤类似。
1)查询
查询的基本步骤可以看下面的这段代码:
CString sql = _T("SELECT Password FROMUserInfo WHERE (UserID = 123“) //要执行的SQL语句
CStringpsd; //存放查询结果
TRY
{
rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql); //打开查询记录
rs.GetFieldValue(_T("Password"),psd); //得到数据
}
CATCH(CDBException,ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox(_T("memory exception"));
}
END_CATCH
2)插入
相对于查询,插入、删除、更改操作就简单得多了。
CString sql = _T("USE Test01 INSERT UserInfo(UserID,UserName)VALUES(" 123, 'Bob');
try
...{
m_db.ExecuteSQL(sql);
}
这一步比较简单,直接打开SQL Server Management Studio,根据自己需要设计数据库中的表,及其之间的依赖关系等等!要想设计一个完美的数据库,就必须了解数据库的基本知识。这里不再具体说了。这里我们假设我们的数据库名字为Test01
2、配置数据源
数据库设计建立完成后,它只是单独的几张表,我们并不能在程序中去访问它,因为程序并不知道数据库在哪里。因此,就要在应用程序跟数据库之间建立连接。
配置数据源说通俗了就是为数据库创建一个对外的窗口,应用程序通过这个窗口来访问数据库中的数据。具体配置步骤为:
1)
打开
控制面板--〉管理工具--〉数据源,在用户DSN面板选择
“添加”
2)
在数据源驱动程序中选择 “SQL Server” --〉完成,即打开
“创建到SQL Server
的新数据源”
3)
在“数据源名称”中填入名称,我们填
TestSQL01,然后选择
服务器,在其中选择要连接到的SQL Server服务器。(如果你电脑的SQL
Server服务打开的话,就会有自己的主机名。或者选择网络上的某个SQL Server。
4)
点击
下一步
配置认证信息
5)
配置完后点击
下一步,
选中 “更改默认的数据库为”复选框,在下拉中选择自己刚才建立的要连接的数据库。
(这一步很重要,一般一个Server上会有多个数据库,如果不更改数据源的默认数据库,你
建立的数据源将连接到默认的数据库,这样就会造成程序中执行SQL语句时“对象名无效”的错误,即找不到你指定的数据表等)
6)
选择完数据库后直接
下一步--〉完成
就完成了数据源的配置。接下来会出现配置数据源的基本信息,可以通过 “测试数据源”来测试数据源是否配置成功。
3、
数据库的连接
建立完数据库,又配置好了数据源,接下来就可以在程序中通过数据源来访问数据库了。
1)
首先要在程序中引入MFC ODBC数据库的定义文件
#include <afxdb.h>
2)
定义CDataBase数据库对象,
CDataBase m_db;
3)
利用CDataBase类的OpenEx函数建立和数据库的连接;
m_db.OpenEx(_T("DSN=TestSQL01;"),CDatabase::noOdbcDialog);
/*这里的TestSQL01
即为步骤2中建立的数据源,然后根据OpenEx函数格式填入参数,主要是用户名、密码之类,这里没有设置,所以就没有*/
具体连接还要捕捉OpenEx可能抛出的异常:
TRY
{
m_db.OpenEx(_T("DSN=TestSQL01;"),CDatabase::noOdbcDialog);
rs.m_pDatabase = &m_db;
}
CATCH(CDBException,ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox(_T("memory exception"));
}
AND_CATCH(CException,e)
{
TCHAR szError[100];
e->GetErrorMessage(szError,100);
AfxMessageBox(szError);
}
END_CATCH
4、
数据库操作
在完成了上面的步骤后,就可以使用SQL语句对数据库进行操作了。基本的操作有
查询、添加、修改、删除等。这里主要说一下查询,其他操作都与添加步骤类似。
1)查询
查询的基本步骤可以看下面的这段代码:
CString sql = _T("SELECT Password FROMUserInfo WHERE (UserID = 123“) //要执行的SQL语句
CStringpsd; //存放查询结果
TRY
{
rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql); //打开查询记录
rs.GetFieldValue(_T("Password"),psd); //得到数据
}
CATCH(CDBException,ex)
{
AfxMessageBox(ex->m_strError);
AfxMessageBox(ex->m_strStateNativeOrigin);
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError();
AfxMessageBox(_T("memory exception"));
}
END_CATCH
2)插入
相对于查询,插入、删除、更改操作就简单得多了。
CString sql = _T("USE Test01 INSERT UserInfo(UserID,UserName)VALUES(" 123, 'Bob');
try
...{
m_db.ExecuteSQL(sql);
}
相关文章推荐
- C#简单连接sql数据库的方法
- 一个简单登陆框的变化+更新了如何连接sql数据库,获得数据集,比较两种方法(数据集和读数据)
- 回调函数中使用MFC类的成员或对话框控件的简单方法。
- 在MFC中显示Jpg格式图片的简单实现方法
- Ubuntu中Android手机连接adb最简单的方法
- QTP的那些事--连接oracle的简单方法(附源码)
- 基于对话框的MFC程序启动时完全隐藏的简单方法
- ASP与SQL数据库连接及SQL常用命令使用方法
- Python2.7简单连接与操作MySQL的方法
- VC/MFC简单实用的全屏方法
- php使用pdo连接并查询sql数据库的方法
- ADO.NET中连接sql数据库的方法
- VS2008开发的MFC程序,静态连接的方法
- MFC学习(26)简单内存泄漏检测方法 解决 Detected memory leaks! 问题
- jsp简单连接SQL Server2000数据库的方法
- VS2010中MFC连接Sql Server 2012方法
- 连接MYSQL报错:client option 'secure_auth' enabled最简单处理方法
- 刚刚在园里看到的一个简单的做连接字符串的方法.
- mysql,sql的Java连接方法(简单应用)执行sql查询与预处理
- VC++/MFC程序图标更改方法以及修改程序标题 超级简单啦