vc之ODBC连接数据库图文全解

合集下载

VISUALC中的开放数据库连接技术

VISUALC中的开放数据库连接技术

VISUALC中的开放数据库连接技术摘要 odbc(open database connectivity,开放数据库连接)提供了一组应用程序调用接口和一套运行支持环境,应用程序可以使用标准的函数进行数据库操纵,而不必关心数据源来自于何种数据库治理系统(dbms),只要有相应的驱动程序即可。

本文先容了odbc的运行机制,着重讨论了visual c 1.5下应用mfc进行odbc编程的方法。

一、开放数据库连接odbc(open database connectivity,开放数据库连接)是微软开放服务结构中有关数据库的一个组成部分。

它建立了一组规范,并提供了一组应用程序调用接口。

用这样一组接口建立的应用程序,对数据库的操纵不依靠于任何数据库治理系统,不直接与任何dbms打交道,由此可实现应用程序对不同dbms的共享。

数据库操纵的“数据源”对应用程序是透明的,所有的数据库操纵由对应dbms的odbc驱动程序(odbc driver)完成。

有了odbc驱动程序,数据源就变得十分广泛,它可以是本机的某种数据库格式的文件(如本机dos目录下的access文件*.mdb),也可以是远程数据库文件(如microsoft sql server);它可以是目前已知的某种dbms格式,也可以是一种全新的数据库格式。

总之,它取决于提供了什么数据库类型的驱动程序。

visual c 中的odbc主要是实现基于windows的关系数据库的应用的共享。

二、odbc治理器在odbc中,数据源是一个重要的概念,它是数据库位置和数据库类型等连接信息的总和。

数据源在使用前必须通过odbc治理器(administrator)进行登录。

在登录数据源时,要搞清数据源名(datasource name)、数据库文件名(database name)和数据表格名(table name)这三者的概念和相互关系:数据源实际是一种数据连接的抽象,数据源名是登录时赋予的“连接”的名称,以供给用程序使用,至于该数据源下连接的是哪一个数据库,则由数据库文件名指出(如access 2.0 for ms offics中的.mdb文件);一个数据库文件中可以包括若干个数据表格(table)和其他内容。

VC++数据库编程(ODBC)

VC++数据库编程(ODBC)

数据库相关的ActiveX控件 控件 数据库相关的
数据库回顾
数据库和DBMS 数据库和 指以一定的组织形式存放在计算机存储介质 上的相互关联的数据的集合。 上的相互关联的数据的集合。 为了有效地管理数据库, 为了有效地管理数据库,常常需要一些数据 库管理系统(DBMS)提供对数据库操作的各种命令、 提供对数据库操作的各种命令、 库管理系统 提供对数据库操作的各种命令 工具及方法。 工具及方法。 SQL(Structured Query Language)即结构 ( ) 化查询语言,是关系数据库存储的工业标准。 化查询语言,是关系数据库存储的工业标准。在数 据库系统开发中常用的是SELECT语句。 语句。 据库系统开发中常用的是 语句 SQL语句分为两类:一是 语句分为两类: 语句, 语句分为两类 一是DDL语句,用来创 语句 建表、索引等,另一是DML,这些语句是用来读取 建表、索引等,另一是 , 数据、更新数据和执行其他类似操作的语句。 数据、更新数据和执行其他类似操作的语句。
ODBC的构成 的构成
ODBC32.dll
以DLL文件形 式出现
位于控制面板
连接数据库的四种方式
DAO(Data Access Objects )数据访问对象 数据访问对象 DAO使用Microsoft Jet提供的数据库访问 对象集直接访问DBMS,速度比ODBC要快。 DAO使用Jet数据库引擎形成一系列的数据 访问对象:数据库对象、表和查询对象、 记录集对象等。可以打开一个Access数据 库文件(MDB文件),也可直接打开一个ODBC 数据源以及使用Jet引擎打开一个ISAM(被 索引的顺序访问方法)类型的数据源(dBASE、 FoxPro、Paradox、Excel或文本文件)。

VC ODBC使用总结

VC ODBC使用总结

VC ODBC使用总结1.打开数据库CDatabase database;database.OpenEx( _T( "DSN=zhuxue" ),CDatabase::noOdbcDialog);//zhuxue为数据源名称2.关联记录集CRecordset recset(&database);3.查询记录CString sSql1="";sSql1 = "SELECT * FROM tablename" ;recset.Open(CRecordset::forwardOnly, sSql1, CRecordset::readOnly);int ti=0;CDBVariant var;//var可以转换为其他类型的值while (!recset.IsEOF()){//读取Excel内部数值recset.GetFieldValue("id",var);jiangxiang[ti].id=var.m_iVal;recset.GetFieldValue("name", jiangxiang[ti].name);ti++;recset.MoveNext();}recset.Close();//关闭记录集4.执行sql语句CString sSql="";sSql+="delete * from 院系审核";//清空表database.ExecuteSQL(sSql);sSql也可以为Insert ,Update等语句5.读取字段名sSql = "SELECT * FROM Sheet1" ; //读取的文件有Sheet1表的定义,或为本程序生成的表.// 执行查询语句recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);int excelColCount=recset.GetODBCFieldCount();//列数CString excelfield[30];//得到记录集的字段集合中的字段的总个数for( i=0;i<excelColCount;i++){CODBCFieldInfo fieldinfo;recset.GetODBCFieldInfo(i,fieldinfo);excelfield[i].name =fieldinfo.m_strName;//字段名}6.打开excel文件CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动CString sSql,sExcelFile; //sExcelFile为excel的文件路径TRY{// 创建进行存取的字符串sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREAT E_DB=\"%s\";DBQ=%s",sDriver, sExcelFile, sExcelFile);// 创建数据库(既Excel表格文件)if( database.OpenEx(sSql,CDatabase::noOdbcDialog) ){//可以把excel作为一个数据库操作}}catch(e){TRACE1("Excel驱动没有安装: %s",sDriver);AfxMessageBox("读取失败,请检查是否定义数据区Sheet1");}本文原创出处couple_xiewei@,例程原代码请发邮件索取摘要:本文介绍了在Visual C++用ODBC访问SQL Server数据库的方法,包括如何在程序中动态配置SQL Server数据源,如何与数据源建立连接,如何得到数据库结构信息等,并给出了示例程序。

通过ODBC连接数据库

通过ODBC连接数据库

通过ODBC 连接数据库(C++)C++连接数据库的方法有很多种,在Visual C++和SQL server 的实际开发中,一般使用ODBC 或ADO 技术进行开发,相关技术和产品也最为成熟。

我们这里根据课程需要采用ODBC 的方法。

我使用的平台的是VS2010和SQL server 2008,优点是VS2010支持一些比较新的特性,编程方便了很多,缺点是左侧的“服务器资源管理器”不支持SQL server 2000,但是没有关系,在SQL server 2008上是可以连上的,大家如果和我的平台不一样的话在编程细节上可能有些问题要注意下。

有同学表示安装了SQL server 2008之后只能通过“windows 身份验证”登陆本地数据库,无法通过“SQL server 身份验证”登陆,这是由于安装的时候是通过“windows 身份验证”安装的,改一下配置即可:1. 使用“windows 身份验证”登陆数据库,点击“登录名”,右击sa ,选择属性,点击状态,确保设置如左侧图所示。

2. 右击本地服务器名选择属性,更改安全性中的服务器身份验证如下图所示3. 右击地服务器名选择重新启动(这一部很重要)4.如何还有问题的话查看目录“D:\Program Files\Microsoft SQLServer\MSSQL10.MSSQLSERVER\MSSQL\Log”下的ERRORLOG文件,找到错误代码,google之打开SQL server 2008 连接一个我们测试用的数据库,使用的10.214.6.98上的数据库db27,用户名和密码都是user277,执行以下命令:use db27CREATE 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),CONSTRAINT ck CHECK(stock<=total))INSERT INTO book VALUES('12345678','数据库','数据库系统原理教程','清华大学出版社',1998,'王珊',27.9,3,0)INSERT INTO book VALUES('12342378','数据库','数据库','清华大学出版社',1998,'王珊',27.9,3,0) INSERT INTO book VALUES('12341278','数据库','数据库','清华大学出版社',1998,'王珊',27.9,3,0) INSERT INTO book VALUES('14345678','数据库','数据库','清华大学出版社',1998,'王珊',27.9,3,0)上面SQL语句执行的结果是在db27数据库中创建了一个名为book的表,里面有9列,随后添加了4个测试数据,现在将该数据源添加到ODBC数据源管理器中,打开路径“控制面板\所有控制面板项\管理工具”下的数据源(ODBC),添加新的数据源,选择“SQL Server”名称设置为db27,服务器在10.214.6.98,使用user277用户登录,完成后点击测试数据源看能不能连上,显示测试成功后,在用户数据源中会看到刚刚添加的DSN:我们编写一个简单的图形化界面,打开VS2010,新建项目,选择“MFC应用程序”,建立一个名为“DataBaseODBC”的项目,弹出的向导中更改应用程序类型为“基于对话框”,大家在实际编程中可以需要选择,这里只是为了做个示例,其他保持默认。

一个完整的odbc连接数据库

一个完整的odbc连接数据库

在这个例字中我还是采用了自己更为熟悉的ODBC。

程序的实现有两个关键地方:一、ODBC两个类的运用。

二、LISTCONTROL控件的使用。

程序的视图用CRecordView类,具体配置可以参考源程序。

程序的实现主要在视图文件中完成,实现的功能有:增加记录、删除记录、修改记录、排序记录、查寻记录,并且在控件表格中直观的显示。

本程序采用的是AECESS数据库,当然也可采用ORACLE等其它数据库。

整个程序的界面简洁、直观(见下图)。

下面介绍具体步骤:首先根据数据库的内容确定表格的样式,这里如下设计:1.在视图头文件中给List Control控件加入Contrl 变量 m_ListCtrl。

在实现文件的OnInitialUpdate()函数中加入如下语句://设表格表题和列的宽度m_ListCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);m_ListCtrl.InsertColumn(0,_T("学号"),LVCFMT_IMAGE|LVCFMT_LEFT);m_ListCtrl.InsertColumn(1,_T("姓名"));m_ListCtrl.InsertColumn(2,_T("数学"));m_ListCtrl.InsertColumn(3,_T("英语"));int j;for(j=0;j<4;j++){m_ListCtrl.SetColumnWidth(j ,90);}这样列表题就设置好,同时设置列的宽度。

还要特别注意的一点,要在List Control控件的属性页Styles中设report属性。

因为程序一运行时,要求所有记录都显示出来所以接着增加了一个Show()函数,为了它的重用性,我对它进行了封装。

在后面的程序中大家可以看到它的好处。

VC++6.0中用ODBC连接mysql数据库

VC++6.0中用ODBC连接mysql数据库

下图是程序的最终效果,包含了数据的显示,添加,修改,删除这几项数据库操作的常用功能。

我的调试环境是xp,mysql版本是mysql4.0.231.安装Mysql的ODBC驱动从上下载驱动程序地址:/downloads/connector/odbc/3.51.html#win32 我是下载的Windows ZIP/Setup.EXE下载到本机之后从zip包中解压出setup.exe文件,双击安装,没什么可说的,完全的傻瓜式安装2.设置ODBC数据源配置MySQL的ODBC数据源有两种方法第一种:手工设置比较麻烦,但是确是比较安全的办法。

步骤如下:开始 -> 控制面板 -> 管理工具 -> 数据源(ODBC),双击数据源(ODBC)之后会出来如下的界面点击右上角的"添加"按钮之后会出现如下的界面可以看到,我们刚才安装的驱动程序已经出现在列表中了,选中它,然后单击完成,此时会出来下面的界面按上图所示,填写好各项连接所需要的信息点击“Test”可以进行测试,如果出现sucessful字样就表示成功了我解释一下填写的信息:Data Source Name:缩写就是DSN,中文翻译过来就是数据源名称,就是给数据源取个名,为了安全还是取英文名吧,省得出现意外。

Description:描述,可填可不填,我比较懒,就没填,想填也行,就是描述一下这个数据源是哪家的,干啥用的等等,随便吧Server:服务器,不能省,我填的是localhost,如果你有远程主机,不妨试试填上远程主机的IP地址,我没试过,不清楚User:用户名,我本地数据库用的是root,你们如果有别的就根据自己的情况填吧Password:密码,我没设置密码,有则填之,没有就留空Database:数据库,这是一个listbox,可以自己填,也可以从下拉列表中选,如果你前面的Server,User,Password都正确的话,下拉列表中会出来可选的数据库,这个就是我们要连接的数据库资源。

VC++使用ODBC连接数据库

VC++使用ODBC连接数据库

VC编程时有时会用到对数据库的操作,Microsoft提供ADO和ODBC两种方式连接数据库并对数据库进行操作。

本文档只对ODBC的连接做出详细的步骤,希望可以帮助到你!
一、首先对电脑配置数据库环境
1、可以从“控制面板—管理工具—数据源(ODBC)”打开添加界面
2、打开界面后如图:
3、单击“添加”按钮。

PS:如果是win7 64电脑可能找不到你想添加的数据库类别,那么你可以从“C:\Windows\SysWOW64”中寻找odbc32的应用程序
4、点击你需要添加的数据库类型进入下图界面。

其中名称处填写需要添加数据库的真实名称,服务器处选择自己电脑的名称即可。

点击完成
二、新建MFC文件添加数据库
1、新建的MFC文件是“MFC AppWizard(exe)”,名称自己根据需要命名
2、在询问是否希望支持数据库时选择“Database view with file support”,然后点击下面的“Data Source”按钮选择需要添加的数据源
3、在ODBC选项处选择自己之前添加的数据库,点击“OK”
4、下面这个界面是添加数据库中含有的表,选择你需要添加的表(可以选择多个)。

点击“OK”
到此将VC和数据库的连接已经完成,下面的变成就帮不了你了,自己努力吧!。

用VC++实现ODBC数据源设置-VC教程-CND8学院

用VC++实现ODBC数据源设置-VC教程-CND8学院

用VC++实现ODBC数据源设置-VC教程-CND8学院用VC++实现ODBC数据源设置CND8学院VC教程发布日期:2008年12月11日将本文收藏到: | 收藏到本地 | 复制本文地址为了使ODBC能与数据库一起工作,必须把数据库注册到ODBC 驱动程序管理器,这项工作可以通过定义一个DSN或数据源名字来完成。

通常,我们只能手动打开系统控制面板,运行其中的ODBC数据源管理器,手工配置数据源,但是这项工作对用户而言过于复杂,我们必须考虑用程序替用户完成这些配置工作。

1. SQLConfigDataSource 函数说明ODBC API提供了动态创建数据源的函数SQLConfig DataSource。

该函数的原型如下:BOOL SQLConfigDataSource ( HWND hwndParent,WORD fRequest,LPCSTR lpszDriver,LPCSTR lpszAttributes );参数说明如下:(1)参数hwndParent用于指定父窗口句柄,在不需要创建数据源对话框时,可以将该参数指定为NULL。

(2)参数fRequest用于指定函数的操作内容,取值如下:ODBC_ADD_DSN:加入一个新的用户数据源;ODBC_CONFIG_DSN:修改一个存在的用户数据源;ODBC_REMOVE_DSN:除一个存在的用户数据源;ODBC_ADD_SYS_DSN:增加一个新的系统数据源;ODBC_CONFIG_SYS_DSN:配置或者修改一个存在的系统数据源;ODBC_REMOVE_SYS_DSN:删除一个存在的系统数据源;ODBC_REMOVE_DEFAULT_DSN:删除省缺的数据源说明部分。

(3)参数lpszDriver用于指定ODBC数据源的驱动程序类别,例如,为了指定Access数据源,该参数应赋以字符串“Microsoft Access Driver (*.mdb)”;对SQL SERVER数据源,则应赋以字符串“SQL Server”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

vc之ODBC连接数据库图文全解
我们在编程时要保存各种实时接收的数据,并为以后的数据再现回放,就应该建立数据文件,而这种数据文件可以用普通文件读写方式,但当数据类型较多且要求随时回放数据时,要求编程时设置较大的动态数组,这会占用较多的系统资源,甚至导致程序崩溃;而利用数据库则可以较好地解决这个问题,我们将数据放到数据源文件中,通过编程接口对其进行访问。

ODBC(开放的数据库连接:Open Database Connectivity)为各种类型的数据库管理系统提供了统一的编程接口,我们在下面的几篇文章中,首先通过实例说明ODBC技术的应用方法,然后说明如何将串口数据实时保存在数据源文件中,这一方面介绍VC中ODBC技术的应用(前面的例子不涉及串口技术,以方便只想了解ODBC技术的读者,又为利用ODBC技术保存串口编程数据提供范例,虽然前面几个例程与串口通讯不相关,但如果对使用数据库不熟悉,也请从前面有耐心地看下去。

1.首先在控制面板中,打开ODBC数据源,点击用户DSN选项,在出现的界面中点击添加,如下图所示:
然后,点击完成按钮,出现下图,填入数据源名(可随意取名,本处设为biao)
点击确定即可。

2.在ACCESS中创建数据库,本例中为data(只包含number,name,score三列),可从我提供的这个例子下COPY
3.建立应用程序项目
(1)打开File 菜单的New 选项,选取Projects,
选择MFC AppWizard (exe),填入工程名,本例为DATA1
(2)把数据库文件data拷入新建的工程目录。

(3)应用程序的类型指定为SDI,在Step2 对话框中选择Header Files Only选项,在Step6是将视图基类指定为CScrollView。

(4)用ClassWizard 创建记录集类。

从Add Class菜单中选择New,并按下图填充对话框:(说明:一个CRecordset对象代表从数据源中查询的一个记录集。


(5).点击OK,进入Data Source,选择biao数据源,并选择Dynast选项,如下图所示:
在选择了数据源之后,ClassWizard提示我们选择一个表。

如下图所示:
(6)在ClassWizard中,针对新产生的CDataSet类,单击Member Variables标签。

此时ClassWizard 应按照数据库列的名称产生了如下的数据成员:
(7)在CData1View类中添加数据成员
(8) 在Cdata1Doc中添加如下成员:
(9)编辑DATA1View.cpp中的OnDraw() 和OnInitialUpdate()函数:void CDATA1View::OnDraw(CDC* pDC)
{
CDATA1Doc* pDoc = Get Docum ent();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
TEXTMETRIC t m;
pDC->GetTextMetrics(&tm);
int nLineHeight=t m.t mHeight+t m.t mExternalLeading;
CPoint pText(0,0);
int y = 0;
CString str;
if (m_pSet->IsBOF()) { // detects em pty recordset
return;
}
m_pSet->MoveFirst(); // fails if recordset is em pty
while (!m_pSet->IsEOF()) {
pDC->TextOut(pText.x, pText.y, m_pSet->m_number);
pDC->TextOut(pText.x+1000, pText.y, m_pSet->m_name); pDC->TextOut(pText.x+4000, pText.y, m_pSet->m_score);
m_pSet->MoveNext();
pText.y -= nLineHeight;
}
}
void CDATA1View::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CSize sizeTotal(8000, 10500);
SetScrollSizes(MM_HIENGLISH, sizeTotal);
m_pSet = &Get Docum ent()->m_dataSet;
if (m_pSet->IsOpen()) {
m_pSet->Close();
}
m_pSet->Open();
}
(10)data1View.cpp 中加入#include "dataSet.h" (11)编译结果应如下所示:
(1)依次打开“控制面板”->“管理工具”->“数据源”,将弹出如下对话框
(2) 选择用户MSN 选项卡,点击添加,弹出如下对话框:
选择Microsoft Access Driver (*.mdb) ,完成,弹出如下对话框:
填写数据源名(可以随便,我这里是MyOdbc),点选择选择自己建立好的Access数据库,确定,再确定。

上面就完成的数据源的注册,接下来做一个实例,用来浏览数据库的内容!(很简单的,呵呵!!) (1)新建项目->项目名这里为:浏览数据库,选择单文档的应用程序,在step 2 of 6 中选择
Database view without file spport 选项,如下图所示:
选Data Source 弹出对话框:ODBC选择刚才设置好的数据源,Recordset type选择Danyset,如下所

OK,选择表,OK,其它的按默认的就可以了。

在对话框添加控件如下:
给IDC_EDIT1添加一个变量(这个变量名可以右边的三角可以看到),如下所示:
同样给IDC_EDIT2添加别一变量
运行点击菜单栏上的上一记录,下一记录可以看到结果了。

相关文档
最新文档