VC6.0连接ACCESS数据库
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);。
基于VC6.0+ACCESS数据库学生成绩管理系统

一、题目基于VC6.0+access数据库的学生成绩管理系统二、主要任务与要求主要任务:学生成绩管理系统是一个教育单位不可缺少的部分。
一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。
所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:效率低、保密性差,人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。
设计该系统主要适用于小范围班级学生信息管理,该系统可方便教师对班级学生成绩信息的管理,同时以电子档案的形式存入,也有助于对学生信息的保存,不仅减少了以传统文件档案形式存放的各种缺点,而且可以更好的保证信息的完整性。
本系统主要完成对成绩浏览、成绩记录删除、成绩记录添加和记录查询等多种数据信息的管理,包括数据库中表的录入、修改、删除等。
系统还可以完成对各类信息的查询、录入、修改、删除等功能。
要求:建立学生成绩管理系统,采用计算机对学生信息进行管理,进一步提高办学效益和现代化水平。
帮助广大教师提高工作效率,实现学生信息管理工作流程的系统化、规范化和自动化。
该系统应该要求简单,对电脑的配置要求不高,一般机器均可运行,操作也应该尽量简单易懂,对于任何教师都能很快的学会操作。
同时系统中应包含一般查询学生成绩信息所需的操作,例如成绩浏览、成绩添加、成绩删除、成绩查询。
三、起止日期 2012年03 月 15日至 2012年 05 月15日指导教师签字(盖章)系主任签字(盖章)年月日河南理工大学万方科技学院毕业设计(论文)评阅人评语专业班级学生姓名题目评阅人签字(盖章)职称工作单位年月日河南理工大学万方科技学院毕业设计(论文)评定书专业班级学生姓名题目指导教师签字(盖章)职称年月日河南理工大学万方科技学院毕业设计(论文)答辩许可证经审查,专业班同学所提交的毕业设计(论文),符合学校本科生毕业设计(论文)的相关规定,达到毕业设计(论文)任务书的要求,根据学校教学管理的有关规定,同意参加毕业设计(论文)答辩。
基于VC6.0ACCESS的图书馆管理系统

目录一、设计目的 (2)1.1读者管理 (2)1.2采编管理 (2)1.3流通管理............................................ 错误!未定义书签。
1.4统计管理............................................ 错误!未定义书签。
1.5查询管理............................................ 错误!未定义书签。
1.6其它辅助功能........................................ 错误!未定义书签。
二、系统的功能分析 (3)2.1系统软件结构图 (3)2.2系统边界图......................................... 错误!未定义书签。
2.3安全设计 (4)三、系统的数据库设计........................................ 错误!未定义书签。
3.1数据字典........................................... 错误!未定义书签。
3.2逻辑结构与物理结构设计............................. 错误!未定义书签。
3.2.1 逻辑结构设计、 (6)3.2.2 物理结构设计 (7)3.3数据库表设计 (8)四、系统的程序设计与实现 (11)4.1程序的运行环境 (11)4.2程序的详细设计 (11)五、系统的运行结果与分析 (26)5.1运行后的界面 (26)5.2数据库脚本 (29)一、设计目的图书管理系统主要包括系统管理、读者管理、图书采购、图书编目、图书流通、统计、查询等一系列的功能。
1、读者管理(1).新学期建立新班级,删除毕业班读者。
(2).为新生办理新借阅证。
(3).读者管理能完成读者调动、借书证挂失、补办、停止借阅、单独打印读者条码等日常事务。
vb6.0如何连接有密码的ACCESS数据库

vb6.0如何连接有密码的ACCESS数据库以前曾看过介绍如何在Visual Basic中连接和使用Access数据库的技术文章,实际上在专业的数据库软件开发中,为了确保数据库中信息的安全,往往要求对数据库文件进行加密,以防止非法用户通过其它的常规手段将其打开。
那么,在Visual Basic中如何建立与加密的数据库的连接呢?笔者在开发本校的宿舍管理信息系统中,总结了一些方法和技巧,现写出来与同行交流。
一、建立数据库因为在Visual Basic 6.0中有的数据库连接方式不支持Access 2000版本格式的数据库,为了便于说明问题,本文所提的数据库以Access 97版本数据库为例。
在Microsoft Access 97中建立一个数据库,如:ssgl.mdb,并设置密码,如:“1234”,再将数据库文件和VB中创建的工程文件放在同一目录下。
如果用户的计算机上只有Access 2000的话,可以先在Access 2000中建立ssgl.mdb数据库,并设置密码,再用Access 2000中的“数据库实用工具”将数据库转换成Access 97版本的格式。
当然也可以直接在Visual Basic 6.0集成开发环境中通过“可视化数据管理器”来创建数据库,再到Access 97中设置密码。
通过对数据库文件设置密码,一般情况下,非法用户就不能用常规的手段打开数据库了,对数据库中的信息起到了一定的安全和保密作用。
二、连接加密的Access数据库在Visual Basic 6.0中,要建立与数据库的连接,可采用的技术手段很多,如:数据控件、数据对象、数据环境设计器等。
开发人员可以根据自身的条件和用户的需求进行选择。
限于篇幅,下面只介绍加密的Access数据库与没有加密的Access数据库在连接时的不同之处。
关于没有加密的数据库的连接及访问的方法读者可以参阅其它资料。
1、使用控件① Data控件Data控件是Visual Basic 6.0中的一个内置数据控件,可以通过设置Data控件的connect、DatabaseName、RecordSource属性实现对数据库的连接和访问。
Visual Basic 6.0绑定Access数据库教程

End Sub
Private Sub Command2_Click() If conn.State = 0 Then
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\试验录入数据库.mdb;Persist Security Info=False"
End If
sql = "insert into [users]([username],[password]) values('" & Text1.Text & "','" & Text2.Text & "')"
Set rs = New ADODB.Recordset
录 入
rs.Open sql, conn, adOpenKeyset, adLockBatchOptimistic 'MsgBox "录入成功!"
sql = "select * from users" rs.Open sql, conn, adOpenKeyset, adLockBatchOptimistic Set MSHFlexGrid1.DataSource = rs
'表头 MSHFlexGrid1.TextMatrix(0, 0) = "唯一编号" MSHFlexGrid1.TextMatrix(0, 1) = "账号" MSHFlexGrid1.TextMatrix(0, 2) = "密码"
解决VC6不能访问ACCESS2000数据库的问题

4.3.4解决V i sua I C++6. 0不能访问Access2000数据库的问题建词库时,我们用的Access版本是2000,当在Visual C++6. 0中用MFC DAO类访问Access2000数据库时,会得到“Unrecognized database format.”错误消息,即“不能辨认的数据库格式”,在Access97中则没有这种错误提示,程序能正常运行。
VC6不能访问Access2000,原因何在?如何解决?作如下分析。
1.错误原因原因是MFC使用了错误的DAO DLL。
默认情况下,Visual C++6. 0使用的MFC DAO类加载的是DA03. 5 (Dao350. dl l) 。
DA03. 5使用Microsoft Jet3.5数据库引擎,而它只能打开支持Jet3. 5或更老版本的数据库。
Access2000使用支持Jet4.0的数据库文件,它对Jet3. 5来说是不能辨认的。
为了能使用MFC DAO类来操作Access2000数据库,我们需要DA03. 6 (Dao360. d11)。
DA03. 6使用Jet4. 0引擎,它能打开任何Access数据库格式。
当MFC调用AfxDaoInit()初始化DAO时,MFC首先要判断加载了哪个版本的DAO,如下:void AFXAPI AfxDaoInit()//在daocore. cpp文件中(VC安装路径MFC\SRC目录下) {..........BYTE bUseDao=_AfxDetermineDaoVersion();..........switch (bUseDao){case 35://Use DA0350.DLLbreak;case 30://Use DA0300.DLLbreak;case 36://Use DA0360. DLLbreak:}.........._AfxDetermineDaoVersion()依据MFC是静态的还是动态的而不同,当使用静态的MFC时,如下:#ifndef AFXDLL#if _MFC_VER>=0x0601#define _AfxDetermineDaoVersion()(36)#else#define _AfxDetermineDaoVersion()(35)#endif当使用动态的MFC时,如下:static inline BYTE _AfxDetermineDaoVersion(){BYTE bReturn=35;#ifdef _AFXDI.LAFX_MODIJLE_STATE* pModuleState=AfxGetModuleState();if (pModuleState-->m_dwVersion<0x421)bReturn=30;else if (pModuleState->m_dwVersion>=0x0601)bReturn=36;#endif //AFXDLLreturn bReturn;}由以上代码可以看出,MFC使用它自己的版本号来判断DAO的版本。
VC连接ACCESS数据库的代码

VC连接ACCESS数据库的代码2007-02-07 21:17:51#include "stdafx.h"#include <iostream.h>#import "c:\program files\common files\system\ado\msado15.dll" \no_namespace rename ("EOF", "adoEOF")int main(){//使用ADO连接数据库...//---------------------------------------------------------------------------------_ConnectionPtr m_pConnection;CoInitialize(NULL);m_pConnection.CreateInstance(__uuidof(Connection));// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,// 因为它有时会经常出现一些想不到的错误。
try{// 打开本地Access库db1.mdbm_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb","","",adMode Unknown);}catch(_com_error e){cout<<"数据库连接失败,确认数据库db1.mdb是否在当前路径下!"<<endl;return FALSE;}//-------------------------------------------------------------------------------------//建立数据集//-------------------------------------------------------------------------------------_RecordsetPtr m_pR ecordset;m_pR ecordset.CreateInstance(__uuidof(Recordset));// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,// 因为它有时会经常出现一些意想不到的错误。
VC++6.0入门【第九章 连接数据库】

第九章连接数据库微机在商业上的应用主要在数据处理,要求能够快速方便地访问一个大型数据库中的记录,MFC 提供了两种独立地面向用户的数据库访问系统,一种是ODBC(Open DataBase Connectivity,开放数据库连接),另一种是DAO(Data Access Objects,数据访问对象)。
本章你将学会使用ODBC和DAO连接数据库,并能够简单地操作数据库数据。
9.1 MFC ODBC连接数据库ODBC是微软公司支持开放数据库服务体系的重要组成部分,它定义了一组规范,提供了一组对数据库访问的标准API,这些API是建立在标准化版本SQL(Structed Query Language,结构化查询语言)基础上的。
ODBC位于应用程序和具体的DBMS之间,目的是能够使应用程序端不依赖于任何DBMS,与不同数据库的操作由对应的DBMS的ODBC驱动程序完成。
9.1.1 ODBC的构成ODBC的结构如图9-1所示。
图9-1 使用ODBC的层次图ODBC层由三个部件构成:1.ODBC管理器ODBC管理器的主要任务是管理安装ODBC驱动程序,管理数据源。
应用程序要访问数据库,首先必须在ODBC管理器中创建一个数据源。
ODBC管理器根据数据源提供的数据库存储位置,类型及ODBC驱动程序信息,建立起ODBC与一个特定数据库之间的联系,接下来,程序中只需提供数据源名,ODBC就能连接相关的数据库。
ODBC管理器位于系统控件面板中。
2.驱动程序管理器驱动器管理器位于ODBC32.DLL,是ODBC中最重要的部件,应用程序通过ODBC API执行数据库操作。
其实ODBC API不能直接操作数据库,需要通过驱动管理器调用特定的数据库的驱动程序,驱动程序在执行完相应操作后,再将结果通过驱动程序管理器返回。
驱动器管理器支持一个应用程序同时访问多个DBMS中的数据。
3.ODBC驱动程序ODBC驱动程序以DLL文件形式出现,提供ODBC与数据库之间的接口。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VC6.0连接ACCESS数据库
今天在网上看了很多有关VC连接数据库的例子,但是大部分都是给出了代码,但是没有很详细地讲解了如何连接数据库,这就是我为什么要写这篇文章,特别适合初学者,看这里你无需要懂得是什么意思,尽管跟着步骤一步一步走那么你就可以连接成功!
已发表到/forpig博客中
首先在VC++中建立一个基于对话框的工程(在这里取名为sjtest)
1、在StdAfx.h头文件中导入msado15.dll文件。
(代码如下)
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace \
rename("EOF","adoEOF")rename("BOF","adoBOF")
2、在主窗口类声明两个变量。
(在CsjtestDlg.h中)
代码:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
关于_ConnectionPtr 和_RecordsetPtr 两个智能指针具体作用网上很多,我不详述。
想了解的请读者自己查询,本文旨在为大家建立起数据库连接并且显示出来!
3、在对话框中添加一个ListControl控件,并且将其属性中的Style设置如图
将View设置成Report,Single selection,auto arrange no label wrap勾上!
4、在CLASS WIZARD里面添加一个和LISTCONTROL想关联的变量m_Grid。
5、在CSjtestApp应用程序类中的初始化函数InitInstance()中初始化COM环境
在上面添加:::CoInitialize(NULL);
并在return之前释放:添加代码如下:::CoUninitialize();
5、建立ADO连接数据库函数
在主窗口类(CSjktestDlg)库中添加函数OnInitADOConn()如图:
并在该函数添加如下代码:
try
{
//创建连接对象实例
m_pConnection.CreateInstance("ADODB.Connection");
//设置连接字符串
CString strConnect="DRIVER={Microsoft Access Driver (*.mdb)};\ uid=;pwd=;DBQ=shujuku.mdb;";
//使用Open方法连接数据库
m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown);
catch(_com_error e)
{
AfxMessageBox("连接数据失败,请检查数据库路径是否正确!");
}
在这里我的数据名字为shujuku.mdb,当然CString strConnect="DRIVER={Microsoft Access Driver (*.mdb)}; uid=;pwd=;DBQ=shujuku.mdb;";也可以使用如下字符串连接CString strConnect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=shujuku.mdb;Persist Security Info=False";代替
6、按照第五步那样建立关闭记录集和连接函数ExitConnect()并添加代码:
//关闭记录集和连接
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
7、接着在初始化对话框中调用OnInitADOConn函数,已经获取数据库表中数据并显示在
列表控件中。
代码如下:
m_Grid.SetExtendedStyle(LVS_EX_FLATSB
|LVS_EX_FULLROWSELECT
|LVS_EX_HEADERDRAGDROP
|LVS_EX_ONECLICKACTIV ATE
|LVS_EX_GRIDLINES);
m_Grid.InsertColumn(0,"员工编号",LVCFMT_LEFT,80,0);
m_Grid.InsertColumn(1,"员工姓名",LVCFMT_LEFT,80,1);
m_Grid.InsertColumn(2,"所属部门",LVCFMT_LEFT,80,2);
m_Grid.InsertColumn(3,"基本工资",LVCFMT_LEFT,80,3);
//连接数据库
OnInitADOConn();
//设置查询字符串
_bstr_t bstrSQL = "select * from employees order by 员工编号desc";
//创建记录集指针对象实例
m_pRecordset.CreateInstance(__uuidof(Recordset));//该句也可以使用
// m_pRecordset.CreateInstance(“ADODB.Recordset”);代替
//打开记录集
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic, adLockOptimistic,adCmdText);
while(!m_pRecordset->adoEOF)
{
m_Grid.InsertItem(0,"");
m_Grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect("员工编号"));
m_Grid.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect("员工姓名"));
m_Grid.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect("所属部门"));
m_Grid.SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect("基本工资"));
//将记录集指针移动到下一条记录
m_pRecordset->MoveNext();
//断开数据库连接
ExitConnect();
8、编译运行,就可以看到结果啦。