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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 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.gif img_1c53668bcee393edac0d7b3b3daff1ae.gif             ...{                
img_33d02437d135341f0800e3d415312ae8.gif                 m_db.ExecuteSQL(sql);
img_05dd8d549cff04457a6366b0a7c9352a.gif             }
       ..............
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
22天前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
104 3
|
16天前
|
SQL 数据库 索引
SQL语句实现投影连接:方法与技巧详解
在SQL数据库查询中,投影和连接是两个核心概念
|
23天前
|
SQL Java 数据库连接
如何使用`DriverManager.getConnection()`连接数据库,并利用`PreparedStatement`执行参数化查询,有效防止SQL注入。
【10月更文挑战第6天】在代码与逻辑交织的世界中,我从一名数据库新手出发,通过不断探索与实践,最终成为熟练掌握JDBC的开发者。这段旅程充满挑战与惊喜,从建立数据库连接到执行SQL语句,再到理解事务管理和批处理等高级功能,每一步都让我对JDBC有了更深的认识。示例代码展示了如何使用`DriverManager.getConnection()`连接数据库,并利用`PreparedStatement`执行参数化查询,有效防止SQL注入。
64 5
|
16天前
|
SQL 数据库 索引
SQL语句实现投影连接:技巧与方法详解
在SQL数据库操作中,投影连接(Projection Join)是一种常见的数据查询技术,它结合了投影(Projection)和连接(Join)两种操作
|
22天前
|
SQL 存储 监控
串口调试助手连接SQL数据库的技巧与方法
串口调试助手是电子工程师和软件开发人员常用的工具,它能够帮助用户进行串口通信的调试和数据分析
|
22天前
|
SQL 数据库 索引
内连接(INNER JOIN)在SQL中的简单应用与技巧
在SQL查询中,内连接(INNER JOIN)是一种基本且常用的连接类型,用于从两个或多个表中检索匹配的记录
|
22天前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:实现过程与关键细节解析an3.021-6232.com
随着互联网技术的快速发展,ASP.NET作为一种广泛使用的服务器端开发技术,其与数据库的交互操作成为了应用开发中的重要环节。本文将详细介绍在ASP.NET中如何连接SQL数据库,包括连接的基本概念、实现步骤、关键代码示例以及常见问题的解决方案。由于篇幅限制,本文不能保证达到完整的2000字,但会确保
|
SQL 网络协议 安全
SQL Server 连接问题-TCP/IP
原文: SQL Server 连接问题-TCP/IP 出自:http://blogs.msdn.com/b/apgcdsd/archive/2012/02/24/ms-sql-server-tcp-ip.aspx TCP/IP的基本工作原理这里就不浪费口水了。
1814 0
|
2月前
|
SQL 数据库
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。
100 12
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
|
8天前
|
存储 数据挖掘 数据库
数据库数据恢复—SQLserver数据库ndf文件大小变为0KB的数据恢复案例
一个运行在存储上的SQLServer数据库,有1000多个文件,大小几十TB。数据库每10天生成一个NDF文件,每个NDF几百GB大小。数据库包含两个LDF文件。 存储损坏,数据库不可用。管理员试图恢复数据库,发现有数个ndf文件大小变为0KB。 虽然NDF文件大小变为0KB,但是NDF文件在磁盘上还可能存在。可以尝试通过扫描&拼接数据库碎片来恢复NDF文件,然后修复数据库。