使用ODBC在C++中连接SQLserver数据库实战

需积分: 9 4 下载量 148 浏览量 更新于2024-09-16 收藏 270KB DOC 举报
"这篇文档提供了一个使用ODBC在MFC环境下连接数据库的示例,主要针对VS2010和SQL Server 2008的环境。文中提到了在安装SQL Server 2008后可能遇到的问题,即仅能使用'Windows身份验证'登录,而不能使用'SQL Server身份验证',并给出了解决方法。此外,还展示了创建数据库表的SQL语句。” 在C++编程中,尤其是在Visual C++(VC)环境下,与数据库交互的方式多种多样,其中ODBC(Open Database Connectivity)和ADO(ActiveX Data Objects)是最常见的两种。ODBC作为数据库访问的标准接口,允许应用程序通过统一的方式与各种数据库系统进行通信。MFC(Microsoft Foundation Classes)库提供了对ODBC的封装,使得在C++中使用ODBC变得更加便捷。 在本示例中,开发者使用VS2010作为IDE,因为它支持更多的新特性,使编码过程更高效。然而,需要注意的是,VS2010的“服务器资源管理器”可能不直接支持SQL Server 2000,但仍然可以在SQL Server 2008上建立连接。如果你的环境不同,可能需要调整一些配置以适应。 当安装SQL Server 2008时,如果选择了“Windows身份验证”模式,可能导致无法使用“SQL Server身份验证”登录。要解决这个问题,可以按照以下步骤操作: 1. 使用“Windows身份验证”登录数据库。 2. 右键点击登录名中的“sa”,选择属性。 3. 确保“状态”设置为启用(如图所示)。 4. 右键点击本地服务器名,选择属性,更改“安全性”中的服务器身份验证为“SQL Server和Windows身份验证模式”(如图所示)。 5. 重启SQL Server服务。 如果在操作后仍存在问题,可以检查“ERRORLOG”文件(位于“D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log”目录下),查找错误代码,并通过搜索引擎寻找解决方案。 在示例中,作者创建了一个名为db27的测试数据库,并用以下SQL语句创建了一个名为`book`的表: ```sql USE db27; CREATE TABLE book ( bno CHAR(8), category CHAR(10), title VARCHAR(40) NOT NULL, press VARCHAR(30) NOT NULL, byear INT CHECK (byear > 0), author VARCHAR(20) NOT NULL, price DECIMAL(7,2) CHECK (price > 0), total INT CHECK (total >= 0), stock INT CHECK (stock >= 0) ); ``` 这个`book`表包含关于书籍的基本信息,如书号(bno)、类别(category)、书名(title)、出版社(press)、出版年份(byear)、作者(author)、价格(price)、总数量(total)和库存(stock)。每个字段都有相应的数据类型和约束,如非空(NOT NULL)和检查条件(CHECK)。 通过以上步骤和示例,你可以学习到如何在MFC中利用ODBC连接SQL Server数据库,创建数据库和表,以及解决常见的身份验证问题。在实际开发中,理解这些基础概念和技术将有助于你更高效地构建数据库驱动的应用程序。