VC++ODBC连接数据库
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连接数据库图文全解我们在编程时要保存各种实时接收的数据,并为以后的数据再现回放,就应该建立数据文件,而这种数据文件可以用普通文件读写方式,但当数据类型较多且要求随时回放数据时,要求编程时设置较大的动态数组,这会占用较多的系统资源,甚至导致程序崩溃;而利用数据库则可以较好地解决这个问题,我们将数据放到数据源文件中,通过编程接口对其进行访问。
ODBC(开放的数据库连接:Open Database Connectivity)为各种类型的数据库管理系统提供了统一的编程接口,我们在下面的几篇文章中,首先通过实例说明ODBC技术的应用方法,然后说明如何将串口数据实时保存在数据源文件中,这一方面介绍VC中ODBC技术的应用(前面的例子不涉及串口技术,以方便只想了解ODBC技术的读者,又为利用ODBC技术保存串口编程数据提供范例,虽然前面几个例程与串口通讯不相关,但如果对使用数据库不熟悉,也请从前面有耐心地看下去。
1.首先在控制面板中,打开ODBC数据源,点击用户DSN选项,在出现的界面中点击添加,如下图所示:然后,点击完成按钮,出现下图,填入数据源名(可随意取名,本处设为biao)点击确定即可。
2.在ACCESS中创建数据库,本例中为data(只包含number,name,score三列),可从我提供的这个例子下COPY3.建立应用程序项目(1)打开File 菜单的New 选项,选取Projects,选择MFC AppWizard (exe),填入工程名,本例为DATA1(2)把数据库文件data拷入新建的工程目录。
(3)应用程序的类型指定为SDI,在Step2 对话框中选择Header Files Only选项,在Step6是将视图基类指定为CScrollView。
(4)用ClassWizard 创建记录集类。
从Add Class菜单中选择New,并按下图填充对话框:(说明:一个CRecordset对象代表从数据源中查询的一个记录集。
Vc++6.0通过ODBC操作Oracle数据库
Vc++6.0通过ODBC操作Oracle数据库Visual C ++6.0 中提供了CDatabase 、CRecordset 、CRecordView、CDBException、Clong Binary 和CFieldExchange 6 个类,这些类封装了ODBC SDK函数,从而使用户可以无需了解SDK函数就可以很方便地操作支持ODBC 的数据库。
Vc++6.0通过ODBC操作数据库(如sqlsever、Access)代码可以直接移植到操作Oracle中,以下这段代码就是一个Vc++6.0连接sqlsever的代码,连接Oracle数据库时,如不需验证,在SQLConnect()加入用户名和密码就可以了,如scott tiger 其连接数据库的过程,就是通过ODBC连接的一般方法// 定义环境句柄、连接句柄、语句句柄SQLHENV henv;SQLHDBC hdbc;SQLHSTMT hstmt;// 定义返回值SQLRETURN rtcode;//m_strSqlStmt="123456";// 分配环境句柄rtcode = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);if(rtcode == SQL_SUCCESS || rtcode == SQL_SUCCESS_WITH_INFO){// 设置环境属性(ODBC版本号)rtcode = SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ ODBC3,0);if(rtcode == SQL_SUCCESS || rtcode == SQL_SUCCESS_WITH_INFO){// 分配连接句柄rtcode = SQLAllocHandle( SQL_HANDLE_DBC, henv, &hdbc);if(rtcode == SQL_SUCCESS || rtcode == SQL_SUCCESS_WITH_INFO){// 设置连接属性(登录超时 = 10s)SQLSetConnectAttr(hdbc,SQL_ATTR_LOGIN_TIMEOUT,(void* )10,0);// 连接数据源LPTSTR lpstrDsn = m_strDB.GetBuffer(m_strDB.GetLength());rtcode = SQLConnect(hdbc,(SQLCHAR*)lpstrDsn,SQL_NTS,(SQLCHAR*)"scott",SQL_NTS,(SQLCHAR*)"tiger",SQL_NTS);if(rtcode == SQL_SUCCESS || rtcode == SQL_SUCCESS_WITH_INFO){// 分配语句句柄rtcode = SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);if(rtcode == SQL_SUCCESS || rtcode == SQL_SUCCESS_WITH_INFO){/******** 查询数据 ********/// 定义参数SQLCHARsqlSelList[SEL_LIST_LEN],sqlTabList[SEL_TAB_LEN],sqlConList[SEL _CON_LEN];// 获得参数CString strList = _GetSelList();CString strTab = _GetSelTab();CString strCon = _GetSelCon();strcpy((char*) sqlSelList ,strList);strcpy((char*) sqlTabList ,strTab);strcpy((char*) sqlConList ,strCon);// 直接执行char str[2000];strcpy( str, "SELECT ");strcat( str, strList);strcat( str, " FROM ");strcat( str, strTab);if( !strCon.IsEmpty()){strcat( str, " WHERE ");strcat( str, strCon);}rtcode = SQLExecDirect( hstmt, (SQLCHAR*)str,SQL_NTS);m_strSqlStmt = CString(str);UpdateData(FALSE);// 释放语句句柄SQLFreeHandle(SQL_HANDLE_STMT,hstmt);}// 断开连接SQLDisconnect(hdbc);}// 释放连接句柄SQLFreeHandle(SQL_HANDLE_DBC,hdbc);}}// 释放环境句柄SQLFreeHandle(SQL_HANDLE_ENV,henv);。
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数据源,如何与数据源建立连接,如何得到数据库结构信息等,并给出了示例程序。
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编程时有时会用到对数据库的操作,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数据源设置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”。
用VC++设计基于ODBC的数据库管理系统
用VC++设计基于ODBC的数据库管理系统ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。
这些API利用SQL来完成其大部分任务。
ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。
一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。
也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBC API进行访问。
由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。
MFC提供的ODBC类对较复杂的ODBC API进行了封装,提供了简化的调用接口,从而大大方便了数据库应用程序的开发。
程序员不必了解ODBC API和SQL的具体细节,利用ODBC类即可完成对数据库的大部分操作。
为了说明如何通过ODBC类操作数据库,本实例给出一个数据库的应用实例,它实现了对数据库中的课程表的浏览、编辑、修改、添加等基本操作。
需要注意的是,在编译运行该程序时,请先注册代码中的数据源,并将该数据源命名为"Student Regritration"。
一、实现方法一个完整的ODBC由下列几个部件组成:(1)应用程序(Application);(2)ODBC管理器(Administrator),该程序位于Windows 95控制面板(Control Panel)的32位ODBC内,其主要任务是管理安装的ODBC驱动程序和管理数据源;(3)驱动程序管理器(Driver Manager),驱动程序管理器包含在ODBC32.DLL中,对用户是透明的。
C语言数据库编程数据库连接和数据操作的方法
C语言数据库编程数据库连接和数据操作的方法C语言数据库编程:数据库连接和数据操作的方法在现代软件开发中,数据库是处理和存储数据的重要组成部分。
C语言作为一种经典的编程语言,也具备了对数据库进行连接和数据操作的能力。
本文将介绍C语言中常用的数据库连接和数据操作的方法,帮助读者了解如何在C语言环境下进行数据库编程。
一、数据库连接方法1. 使用ODBC(Open Database Connectivity)连接数据库ODBC是一种开放的数据库连接标准,可以在不同的数据库管理系统间进行数据交互。
在C语言中,可以通过ODBC API来连接数据库。
首先需要安装ODBC驱动,并在代码中引入相关头文件。
然后利用ODBC API提供的函数,进行数据库连接的建立和关闭。
2. 使用MySQL提供的C语言库连接MySQL数据库对于MySQL数据库,可以使用MySQL提供的C语言库进行连接。
首先需要安装MySQL C Connector,并在代码中引入相应的头文件。
然后通过函数调用,使用用户名、密码等信息进行数据库连接,并进行相应的错误处理。
二、数据操作方法1. 数据库查询操作数据库查询是对数据库中的数据进行检索的操作。
在C语言中,可以使用SQL语句来进行查询操作。
首先需要使用SQL语句构建查询语句,然后通过相应的数据库操作函数执行查询,并将结果返回到程序中进行处理。
2. 数据库插入操作数据库插入操作是向数据库中插入新的数据记录。
在C语言中,可以使用SQL语句构建插入语句,并通过数据库操作函数执行插入操作。
需要注意正确处理数据类型和插入的数据完整性。
3. 数据库更新操作数据库更新操作是对数据库中已有数据进行修改的操作。
在C语言中,可以使用SQL语句构建更新语句,并通过数据库操作函数执行更新操作。
4. 数据库删除操作数据库删除操作是从数据库中删除指定的数据记录。
在C语言中,可以使用SQL语句构建删除语句,并通过数据库操作函数执行删除操作。
ODBC连接数据库总结
ODBC连接数据库总结ODBC,全称为Open Database Connectivity,是一种连接数据库的API(应用程序接口),可以使用通用的SQL查询语言来访问各种不同的数据库。
ODBC提供了一个标准化的接口,使得应用程序可以通过统一的方式与不同类型的数据库进行通信。
ODBC的优势在于它提供了一个简单、灵活、可扩展的方法来连接多种数据库系统。
这使得开发人员可以使用相同的代码来连接和操作不同类型的数据库,而不必关心底层数据库的细节。
ODBC还提供了高性能的数据访问和查询功能,可以实现快速的数据检索和处理。
ODBC的使用过程包括几个关键步骤:1.安装和配置ODBC驱动程序:ODBC驱动程序是用来连接特定类型的数据库的组件。
在使用ODBC之前,需要安装和配置适当的ODBC驱动程序。
这通常涉及到安装驱动程序软件,并进行一些配置设置,如指定数据库的位置和连接参数等。
2.创建ODBC数据源:ODBC数据源是一个逻辑名称,用来标识要连接的数据库。
可以通过ODBC管理器来创建和配置ODBC数据源。
配置数据源时,需要提供一些信息,如数据库类型、主机名、端口号、用户名、密码等。
创建数据源后,可以通过该数据源来连接数据库。
3.编写应用程序代码:在编写应用程序代码时,需要使用ODBCAPI来连接数据库和执行SQL查询。
ODBCAPI提供了一组函数和数据结构,用于连接数据库、执行SQL查询、获得结果集等操作。
开发人员需要熟悉ODBCAPI,并使用合适的函数和方法来完成所需的操作。
4.运行和测试应用程序:完成应用程序的编写后,可以进行运行和测试。
在运行应用程序时,需要确保已正确安装和配置了ODBC驱动程序,并且已创建了相应的ODBC数据源。
在测试过程中,可以执行各种SQL查询和操作,来验证数据库连接和数据访问的功能。
ODBC的使用有一些注意事项和最佳实践:1.使用合适的ODBC驱动程序:不同类型的数据库需要使用特定的ODBC驱动程序来连接。
C++ODBC方式连接数据库
他把表中的六列和六个变量建立了关系。然后我们就可以通过这六个变量来 对数据库进行操作了。
下面给出对话框初始化函数里面的代码:
BOOL CxuejiDlg::OnInitDialog() {
首先是用 ACCESS 方式连接数据库: ; 管理工具->数据源(ODBC) 就到了图一界面:
图一
然后点击右边的添加按钮: 很多书里面都叫添加时候选第二项,也就是图二里面所以深色背景那项:
图二
Vc6.0 的操作就是这样选择。但在 VS2010 里面就不对。我用的是 VS2010 然后用 ACCESS2007 做数据库保留后缀名:accdb 如图三
// 实º¦Ì现? #ifdef _DEBUG
virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif
};
VS2010 的注释粘贴到 word 里面会乱码,我也不知道怎么回事,不过这不影 响程序的理解,可以看到,这个类定义了六个变量和两个虚函数
图三
选择这一项在 VS2010 里面就不会出错了 我在这里添加了一个叫:liyixu 的 access 数据库 这就配置好了数据源
接下来,讲 VS2010 里面怎样连接这个数据库: 在 VC6.0 里面是通过添加类的方法来添加数据库里面的具体某一个表。而在 VS2010 里面也差不多。但是当我们按照 VC6.0 添加正常类的时候发现,他没有 基类 CRecordset 类可以选择:
再看他的源程序:
// score.h : Cscore 类¤¨¤的Ì?实º¦Ì现?
c语言连接access数据库(odbc)方式
SQL_NTS, (unsigned char*)szConnStrOut,
255, (SQLSMALLINT*)&iConnStrLength2Ptr, SQL_DRIVER_NOPROMPT);
{
printf("%s: Couldn't connect to %s.\n", DAM, szDSN);
}
/* Disconnect and free up allocated handles */
SQLDisconnect(hDbc);
这里修改sql语句。注意两句
*/
#include <windows.h>
#include <stdio.h>
#include <sqlext.h>
/* Data Access Method used in this sample */
const char* DAM = "Direct ODBC";
SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
printf("%s: Cleanup. Done.\n", DAM);
}
}
printf("\n");
}
else
{
printf("%s: Error: Number of fields in the result set is 0.\n", DAM);
在VC++6.0中使用ODBC连接数据库
在VC++6.0中使用ODBC连接数据库(一)一、建立数据源进入控制面板,点击【管理工具】,进入管理工具后点击【数据源(ODBC)】打开如图1的窗口,从图中的【用户DSN】可以看到我们自己添加的数据源如ClassAffairManageDSN、DataDSN等。
图1 ODBC数据源管理器在【用户DSN】标签页的右上方有三个按钮,分别是【添加(D)…】、【删除(R)】、【配置(C)…】,对应功能分别如下:【添加(D)…】:添加用户自定义新的数据源。
【删除(R)】:选择某个数据源后,点击它可以删除选中的数据源。
【配置(C)…】:选择某个数据源后,点击它可与对选中的数据源重新配置。
点击【添加(D)…】,弹出创建新数据源的窗口,进入创建新数据源的向导,如图2所示图2 创建新数据源列表框中显示的是在自己的电脑上安装的所有ODBC数据源驱动。
以创建SQL Server2000中的Northwind数据库的数据源为例,选择SQL Server数据库的驱动器,点击【完成】弹出“创建的SQL Server 的新数据源”窗口,在“名称”对应的编辑框中输入新创建的数据源的名称“NorthwindDSN”,“描述”可写可不写,“服务器”填写数据源所在的服务器,如果在本机创建则可输入“(local)”。
如图3所示。
图3 创建新数据源第一步:设置数据源名称和服务器点击【下一步】进入下一步的设置中,如图4所示:图4可以根据需要修改这一页的设置,这里选择默认设置,点击【下一步】进入下一步设置如图5所示。
图 5勾选上“更改默认的数据库为:”复选框,选择新数据源链接的数据库为Northwind,设置后如图6所示。
图 6点击【下一步】,进入如下页面:图 7点击【完成】可以看到新创建的数据源的配置信息如下图。
图 8点击【测试数据源(T)…】,弹出如图9窗口时表示新数据源创建成功。
图 9 测试数据源点击【确定】回到原来的窗口,再点【确定】完成新数据源的创建工作,在“ODBC数据源管理器”的“用户DSN”标签页中看到我们新建的数据源,如图10所示。
教你在VC+中使用ODBC方式链接数据库
如何在VC+用使用ODBC方法链接SQL Server一、SQL Server 20001、打开“企业管理器”,你会发现“SQL Server组”中已经存在“(local)”服务器,为了简单,我们就使用该服务器;2、在“local”服务器下新建一个“数据库”(自命名为“mydb”),并在该数据库中新建一张表(假设命名“T_RealData”),存储自己的数据。
二、ODBC数据源1、打开“控制面板”(要用控制面板的经典视图,分类视图中没有管理工具,在XP中两种视图通常可以切换),选择“管理工具”,打开“数据源(ODBC)”;2、在“(ODBC)数据源管理器”对话框中选择“系统DSN”选项卡,添加新的系统数据源:1)选择安装数据源的驱动程序——“SQL Server”;2)数据源名称——“myDSN”,连接服务器——“(local)”;3)下一步,下一步;4)更改默认的数据库为“mydb”;下一步;5)完成。
测试数据源(如果不出意外,通常会测试成功的)。
三、VC访问数据1、链接数据库并打开CDatabase m_dbAgent;m_dbAgent.OpenEx("DSN=myDSN;UID=SA;PWD="); //DSN是数据源的名字2、获取表中数据/***************获得数据表中的对象个数m_nItem**************************/CString sql,str;CRecordset *p_rs=new CRecordset; //定义记录集对象指针p_rs->m_pDatabase=&m_dbAgent; //使数据库指向m_dbAgentsql = _T("select count(*) as total from T_RealData"); //使用集函数查询对象个数p_rs->Open(AFX_DB_USE_DEFAULT_TYPE,sql); //获得有效的查询记录集p_rs->GetFieldValue("total",str); //取出查询记录集中的数据int m_nItem=atoi(str);3、数据库操作sql = _T("backup database mydb to disk='%s'", SavePath); //备份数据库m_dbAgent.ExecuteSQL(sql);sql= _T("restore database mydb from disk='%s'", filepath); //还原数据库m_dbAgent.ExecuteSQL(sql);四、问题1、程序运行时出现错误对话框——对象名“T_RealData”无效,未能准备语句。
教你在VC 中使用ODBC方式链接数据库
如何在VC+用使用ODBC方法链接SQL Server一、SQL Server 20001、打开“企业管理器”,你会发现“SQL Server组”中已经存在“(local)”服务器,为了简单,我们就使用该服务器;2、在“local”服务器下新建一个“数据库”(自命名为“mydb”),并在该数据库中新建一张表(假设命名“T_RealData”),存储自己的数据。
二、ODBC数据源1、打开“控制面板”(要用控制面板的经典视图,分类视图中没有管理工具,在XP中两种视图通常可以切换),选择“管理工具”,打开“数据源(ODBC)”;2、在“(ODBC)数据源管理器”对话框中选择“系统DSN”选项卡,添加新的系统数据源:1)选择安装数据源的驱动程序——“SQL Server”;2)数据源名称——“myDSN”,连接服务器——“(local)”;3)下一步,下一步;4)更改默认的数据库为“mydb”;下一步;5)完成。
测试数据源(如果不出意外,通常会测试成功的)。
三、VC访问数据1、链接数据库并打开CDatabase m_dbAgent;m_dbAgent.OpenEx("DSN=myDSN;UID=SA;PWD="); //DSN是数据源的名字2、获取表中数据/***************获得数据表中的对象个数m_nItem**************************/CString sql,str;CRecordset *p_rs=new CRecordset; //定义记录集对象指针p_rs->m_pDatabase=&m_dbAgent; //使数据库指向m_dbAgentsql = _T("select count(*) as total from T_RealData"); //使用集函数查询对象个数p_rs->Open(AFX_DB_USE_DEFAULT_TYPE,sql); //获得有效的查询记录集p_rs->GetFieldValue("total",str); //取出查询记录集中的数据int m_nItem=atoi(str);3、数据库操作sql = _T("backup database mydb to disk='%s'", SavePath); //备份数据库m_dbAgent.ExecuteSQL(sql);sql= _T("restore database mydb from disk='%s'", filepath); //还原数据库m_dbAgent.ExecuteSQL(sql);四、问题1、程序运行时出现错误对话框——对象名“T_RealData”无效,未能准备语句。
VC数据库编程之MFC ODBC连接
VC数据库编程之MFC ODBC连接VC数据库编程的方法有很多,下面介绍MFC ODBC连接的方法。
MFC ODBC是MFC对ODBC进行的封装,以简化对ODBC API的调用,从而实现面向对象的数据库编程接口.MFC ODBC的封装主要开发了CDatabase类和CRecordSet类(1) CDatabase类CDatabase类用于应用程序建立同数据源的连接。
CDatabase类中包含一个m_hdbc变量,它代表了数据源的连接句柄。
如果要建立CDatabase类的实例,应先调用该类的构造函数,再调用Open函数,通过调用,初始化环境变量,并执行与数据源的连接。
在通过Close函数关闭数据源。
CDatabase类提供了对数据库进行操作的函数及事务操作。
(2) CRecordSet类CRecordSet类定义了从数据库接收或者发送数据到数据库的成员变量,以实现对数据集的数据操作。
CRecordSet类的成员变量m_hstmt代表了定义该记录集的SQL语句句柄,m_nFields为记录集中字段的个数,m_nParams为记录集所使用的参数个数。
CRecordSet的记录集通过CDatabase实例的指针实现同数据源的连接,即CRecordSet的成员变量m_pDatabase.MFC ODBC编程更适合于界面型数据库应用程序的开发,但由于CDatabase类和CRecordSet类提供的数据库操作函数有限,支持的游标类型也有限,限制了高效的数据库开发。
在编程层次上属于高级编程。
应用实例: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 {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;CRE ATE_DB=\"%s\";DBQ=%s",sDriver, sExcelFile, sExcelFile);// 创建数据库 (既Excel表格文件)if( database.OpenEx(sSql,CDatabase::noOdbcDialog) ){//可以把excel作为一个数据库操作}}catch(e){TRACE1("Excel驱动没有安装: %s",sDriver); AfxMessageBox("读取失败,请检查是否定义数据区Sheet1"); }。
odbc连接数据库步骤
连接数据库使用ODBC(Open Database Connectivity)需要以下步骤:
1. 安装数据库驱动程序:首先需要安装数据库的ODBC驱动程序,这通常是由数据库供应商提供的。
安装驱动程序后,系统就可以识别和连接到相应的数据库。
2. 打开ODBC数据源管理器:在Windows操作系统中,可以通过控制面板-> 管理工具-> 数据源(ODBC)来打开ODBC数据源管理器。
3. 添加数据源:在ODBC数据源管理器中,选择“系统DSN”或“用户DSN”,然后点击“添加”按钮。
接下来选择安装的数据库驱动程序,然后点击“完成”。
4. 配置数据源:在添加数据源后,需要配置数据源的连接信息,包括数据库的名称、服务器地址、用户名和密码等。
根据数据库供应商提供的信息进行相应的配置。
5. 测试连接:配置完成后,可以点击“测试连接”按钮来测试是否成功连接到数据库。
如果连接成功,会显示连接成功的提示信息。
6. 使用连接:配置成功后,就可以在应用程序中使用ODBC连接数据库了。
可以通过ODBC 接口来执行SQL查询、插入、更新和删除等操作。
这些是连接数据库使用ODBC的基本步骤,具体的操作可能会因数据库类型和版本而有所不同。
VC++和Oracle数据库的三种连接方式
1、VC++采用OO4O方式连接Oracle数据库COM(Component Object Model)是微软在基于Window平台上,实现软件的构件化设计和软件再利用的一种技术策略。
OO4O是基于组件对象模型的技术,能和Oracle数据库进行无缝连接和优化访问的一组编程对象的集合。
自上而下层次关系如下:Visual C++oracle data control oracle c++ class library automation controllersmicrosoft oleoracle object serveroraclient oradynasetorasession orasql stmtoraconnection orafieldoradatabase oraparameterOracle Call Interface(OCI)SQL * NET and NetworkOracle DBMS2、Visual C++ 采用ODBC方式连接Oracle数据库ODBC(Open Database Commectivity 开放数据库连接)是解决异种数据库访问的问题,减少了数据库访问的复杂性,提高了数据库的独立性。
在微软封装ODBC功能的MFC类:CDatabase CRecordset CRecordView CDBException。
用ODBC开放的程序Microsoft驱动程序管理ODBC驱动程序1 ODBC驱动程序2 ODBC驱动程序3数据库1 数据库2 数据库33、采用Pro*C方式连接Oracle数据库Pro*C是Oracle公司提供的在第三代高级程序设计语言中嵌入SQL语句来访问数据库的一套预编译程序,利用Oracle公司提供的工具生成高级语言格式的源程序,然后就可以将这些源程序加入用户的程序中。
4、三种方法的比较(1)3中方法的数据访问应用程序接口特性:OO4O在开放性、可视化开放、Oracle 的连接能力方面比较好,但只适用于Oracle数据库。
数据库连接c 的方法
数据库连接c 的方法数据库连接是指建立数据库连接并进行数据交互的过程,可以使用不同的方法来连接数据库。
在C语言中,也有多种方法可以连接数据库,常见的方法包括使用ODBC、JDBC和数据库提供的API等。
一、ODBC连接数据库:ODBC(Open DataBase Connectivity)是一种数据库连接标准,通过ODBC 可以连接不同数据库,包括MySQL、SQL Server等。
在C语言中,我们可以使用ODBC API来连接数据库。
具体步骤如下:1. 包含头文件:odbcinst.h、sql.h、sqlext.h、sqltypes.h;2. 定义ODBC环境、连接句柄和状态变量;3. 调用函数SQLAllocHandle来分配环境和连接句柄;4. 设置连接属性,如数据库驱动、连接字符串等;5. 调用函数SQLConnect来连接数据库;6. 进行数据操作,如查询、插入、更新等;7. 关闭连接,释放资源。
二、JDBC连接数据库:JDBC(Java Database Connectivity)是一种Java编程语言访问数据库的API,通过JDBC可以连接不同数据库。
在C语言中,我们可以使用JNI(Java Native Interface)来调用Java中的JDBC API。
具体步骤如下:1. 定义JVM(Java虚拟机)实例句柄、对象句柄和方法句柄;2. 加载并初始化JVM;3. 调用函数GetDefaultJVMInitArgs来获取JVM初始化参数;4. 调用函数InitializeJVM来初始化JVM;5. 创建Java虚拟机实例,并获取环境对象;6. 调用函数RegisterNatives来注册本地方法;7. 调用Java中的JDBC API来连接数据库;8. 进行数据操作,如查询、插入、更新等;9. 断开数据库连接,释放资源。
三、数据库提供的API连接数据库:各种数据库都提供了自己的API,通过调用数据库提供的API来连接数据库。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
bool CAdoConnection::ExecuteSql(_bstr_t mySql)
{ m_pConnection->Execute(mySql,NULL,adCmdText);}
至此,在应用程序中可以通过定义这个ADOConnection的实例来完成相应的操作。
查询操作:
首先定义ADOConnection,执行初始化ADO连接; 根据查询条件取得记录集指针:
_bstr_t mySql="select * from COURSES where CouID='"+m_CouID+"'";
_RecordsetPtr myRecordset=myConnection.GetRecordset(mySql);
m_pConnection->Close();
::OleUninitialize();
至此,关于数据库的连接与断开就能顺利实现,接下来将是对数据库中表的操作,即对记录集操作。 当操作数据库的表时,需先声明数据集指针:_RecordsetPtr m_pRecordset; 与创建ADO连接类似,需要在所操作的对话框类的OnInitDialog()中创建记录集对象:
记录集的查询操作:
使用可以使用如下的函数来实现记录集的移动Movefirst, movenext , moveprev,movelast。
提取列属性:getcollect(“列名”),注意:此处的返回值类型为:_variant_t,这个类型类包含了许多与c++所支持的类型的转换函数,较常用的是与cstring类型的转换(LPCSTR)_bstr_t(_variant_t类型变量)。
最近一直在学习研究用vc++访问数据库的问题,使用过ADO,也使用过ODBC。就这两种连接数据源的接口都有好几种方式,可以利用database,也可以利用dataset。利用这个word把我学习的思路整理一下。
一、使用ADO连接数据源
一般来说当建立基于对话框的应用程序时,都选择使用ADO比较方便(这纯属个人习惯问题)。
CString strConnect=m_pStudentSet->GetDefaultConnect();
m_database.Open(NULL,false,false,strConnect,false);
}
这里m_pStudentSet是在该文档类中重新定义的一个CStudentSet记录集指针,至此可以建立应用程序与数据库的连接。 添加记录操作:
设置之后一定要调用m_pRecordset->update来更新记录集
记录集的修改操作:
修改操作与增加操作类似,唯一不同之处在于不用先调用addnew,而直接将记录集指针移动到需要修改的记录处,执行putcollect操作。
之后再update。
记录集的删除操作:
m_database.ExecuteSQL(mySql);
mySet.Update();
删除记录、修改记录操作:
{
OnInitAdoConneciton();
}
m_pRecordset.CreateInstance(_uuidof(Recordset));
m_pRecordset->Open(mySql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
在相应函数中声明CDatabase m_database
在函数中定义CStudentSet mySet(&m_database);
再打开记录集myset.open();
mySet.AddNew();
CString mySql;
mySql="insert into STUDENTS(StuID,StuName) values('"+m_pSet->m_StuID+"','"+m_pSet->m_StuName+"')";
myConnection.ExecuteSql(mySql);
修改操作、删除操作:
与添加操作类似,执行update和delete语句
说明:每个函数中的初始化ADOConnection和释放应相对应。
与方法1相比,不需要单条操作记录集,记录集指针也可以声明多个,执行sql语句更方便。
目的:产生msado15.tlh和msado15.tli两个头文件来定义ADO库。
定义好ADO库后,应初始化COM库环境。其方法为:
在C***APP::InitInstance中定义_ConnectionPtr m_pConnection;
AfxOleInit();//使用AfxOleInit初始化OLE/COM库环境
记录集的增加操作:
确保要操作的记录集打开之后,首先调用m_pRecordset->addnew(),addnew之后将自动生成一个供记录集域值使用的新的空记录,来存放即将增加的数据信息,系统将自动执行sql的insert语句来插入记录。
然后通过设置列属性:putcollect(“列名”,_variant_t &pvar)来设置记录信息
根据指针的返回情况进行处理。
添加操作:
首先根据实际情况判断所要添加的记录是否存在(类似查询); 若返回的指针是为空,则说明要添加的记录不存在,则可以执行insert:
mySql="insert into COURSES values('"+m_CouID+"','"+m_CouName+"',"+CouScore+","+CouTea+",'"+m_CouKind+"')";
另外,在修改和删除操作中也可能需要查询满足条件的记录,可以这样实现:
str.Format("select * from STUDENTS where StuID='%s'",m_StuID); m_pRecordset->Open(str.AllocSysString(),theApp.m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
//创建ADO连接
m_pConnection.CreateInstance(_uuidof(Connection));
//在ADO操作中使用try...catch捕获错误
try
{ m_pConnection->Open("provider=SQLOLEDB;server=ZENGYH;database=postms;uid=sa;pwd=hongyi","","",adModeUnknown);
}
catch (_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
return m_pRecordset;
}
执行SQL语句主要使用connection来实现(不同于方法1利用记录集来实现)
1.直接在应用程序中建立与数据库的connection
2.自己写一个ADOConnection类作为应用程序操作数据库的接口,这样操作的层次更明显,程序的分层思想也体现较好。
下面分别就这两种方法做个总结。
1.直接在应用程序中建立与数据库的connection
ห้องสมุดไป่ตู้ 定义ADO库,初始化与ADO的连接,释放连接与方法1一致;
初始化记录集:
_RecordsetPtr & CAdoConnection::GetRecordset(_bstr_t mySql)
{
try
{
if (m_pConnection==NULL)
}
catch (_com_error e)
{
AfxMessageBox("连接数据库失败!");
return FALSE;
}
而相应的释放数据库的连接:
在C***APP:: ExitInstance中:
在应用程序中要使用ADO,则需要引入ADO的动态连接库。其方法为:
在StdAfx.h中:
#import "c:\program files\common files\system\ado\msado15.dll"\
no_namespace\
rename("EOF","adoEOF")
m_pRecordset.CreateInstance(_uuidof(Recordset));
如此之后将可以使用m_pRecordset来查询,修改,删除数据库等。
打开要操作的表可使用m_pRecordset的open函数m_pRecordset->Open("select * from STUDENTS",theApp.m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
记录集的初始化可以通用到ADOConnection类中,而无需方法1中在不同的类中初始化各自的记录集。