开发者社区> 落雨_> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【转】MFC 连接SQL SERVER(ODBC方式)

简介: 1、建立数据库 这一步比较简单,直接打开SQL Server Management Studio,根据自己需要设计数据库中的表,及其之间的依赖关系等等!要想设计一个完美的数据库,就必须了解数据库的基本知识。
+关注继续查看

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)查询

     查询的基本步骤可以看下面的这段代码:

img_a6339ee3e57d1d52bc7d02b338e15a60.gif CString sql = _T("SELECT Password FROM UserInfo    WHERE (UserID =   123“)       //要执行的SQL语句
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
img_a6339ee3e57d1d52bc7d02b338e15a60.gif     CString psd;    //存放查询结果
img_a6339ee3e57d1d52bc7d02b338e15a60.gif     TRY
img_a6339ee3e57d1d52bc7d02b338e15a60.gif     {
img_a6339ee3e57d1d52bc7d02b338e15a60.gif    rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql);      //打开查询记录
img_a6339ee3e57d1d52bc7d02b338e15a60.gif     rs.GetFieldValue(_T("Password"),psd);       //得到数据            
img_a6339ee3e57d1d52bc7d02b338e15a60.gif     }
img_a6339ee3e57d1d52bc7d02b338e15a60.gif     CATCH(CDBException,ex)
img_a6339ee3e57d1d52bc7d02b338e15a60.gif     {
img_a6339ee3e57d1d52bc7d02b338e15a60.gif         AfxMessageBox(ex->m_strError);
img_a6339ee3e57d1d52bc7d02b338e15a60.gif         AfxMessageBox(ex->m_strStateNativeOrigin);
img_a6339ee3e57d1d52bc7d02b338e15a60.gif     }
img_a6339ee3e57d1d52bc7d02b338e15a60.gif         AND_CATCH(CMemoryException,pEx)
{
img_a6339ee3e57d1d52bc7d02b338e15a60.gif         pEx->ReportError();
img_a6339ee3e57d1d52bc7d02b338e15a60.gif         AfxMessageBox(_T("memory exception"));
img_a6339ee3e57d1d52bc7d02b338e15a60.gif     }
img_a6339ee3e57d1d52bc7d02b338e15a60.gif     END_CATCH

              2)插入

                相对于查询,插入、删除、更改操作就简单得多了。img_a6339ee3e57d1d52bc7d02b338e15a60.gif                                                                CString sql = _T("USE Test01 INSERT UserInfo(UserID,UserName) VALUES(" 123, 'Bob');

img_a6339ee3e57d1d52bc7d02b338e15a60.gif             try
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif             ...{                
img_33d02437d135341f0800e3d415312ae8.gif                 m_db.ExecuteSQL(sql);
img_05dd8d549cff04457a6366b0a7c9352a.gif             }
       ..............

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SQL server 2008 最小化安装(学习专用)
之后下载这两个安装包,根据电脑实际情况下载,这里我选择x64版本的两个轻量级安装包,其他版本比较大,学习的话这两个版本就够了
0 0
VS2017调用SQL server 2019 和C++连接语句字符串
VS2017调用SQL server 2019 和C++连接语句字符串
0 0
函数计算 Python 连接 SQL Server
函数计算 Python 连接 SQL Server 自制脑图
0 0
SQL Server 2000 函数使用---CAST 和 CONVERT
日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。
0 0
【Sql Server】进阶之行数据转为列显示
在开发系统维护阶段,经常需要进行各种数据统计,各种报表之类的。 这个时候,行数据转数据显示就发挥作用了。 场景:行数据的某列值想作为字段列显示
0 0
【Sql Server】时间转换和查询时间范围查询不正确的原因
最近在做时间方法封装的时候发现了一个问题! 如果sql语句输出的时间字段转为了字符串输出,那么在使用此字段作为时间范围筛选时发现无效了,没法过滤对应的时间范围内记录
0 0
【Sql Server】基础之统计库龄语句,仅作为语句使用
知识点的综合使用 分组、数据转换、Case when then、max、min、count、sum、left join多表关联等知识点
0 0
【Sql Server】sql语句文件组分区函数分组方案对应分区表的简单步骤
本篇文章中,主要讲讲sql server数据库中通过sql语句方式对组分区函数的使用 在实际项目中,sql server数据库中有分区的概念,因为在一个表存在大量数据的情况下,需要通过分区方式保存数据来提供查询性能
0 0
【Sql Server】存储过程通过定时执行添加记录作业
通过上篇了解了什么是存储过程,创建存储过程的方法,以及调用存储过程的方法 本次将通过数据库中的作业功能,进行定时执行存储过程,这样就可以完成我们刚开始假设的场景
0 0
【Sql Server】创建触发器,以及通过触发器来统计阅读数量(下)
在本篇文章中,主要来讲讲数据库中的触发器功能 在实际项目中,触发器多数用到在数据添加、修改、删除时,额外去做的一些操作,比如:数据删除了,会通过触发器将删除数据备份到另一个表,再或者文章被阅读,通过触发器更新阅读数量
0 0
+关注
落雨_
http://js-dev.cn
文章
问答
文章排行榜
最热
最新
相关电子书
更多
SQL Server在电子商务中的应用与实践
立即下载
SQL Server云化思考与实践
立即下载
RDS SQL Server CPU高使用率性能优化
立即下载