ODBC连接数据库实例

2012-12-13 22:27 (分类:默认分类)

1.先是成立数据源,正常情况下载控制面板-管理工具-数据源,打开后发用户DSN系统DSN
两岸分别在系统级的DSN,就是对该网的富有登录用户可用,用户DSN是单独对建它的用户可用
2.安排好之DSN,比如连接ACCESS数据库
单击“添加”按钮,显示“创建新数据源”对话框。选择“Microsoft Access
Driver(*.mdb)”,
单击<完成>,进入下一样步。
遵照起个数据源名称(如:MyData),再单击“选择(S)…”,选择Access数据库,确定,就OK了。

本人这边连的凡ACCESS
数据源名称是 “登陆框“  里面只有发一个表 登录表 三单字段 ID 用户名
密码

专门说明,win7
64号之同桌打开数据源,单击“添加”按钮后,是休是不曾教,去这里
C:\Windows\SysWOW64\odbcad32.exe    32各数据源

这样数据源就补充加事业有成了

建立程序  这次通过vc6.0 创建MFC exe 程序
根本利用MFC封装的
odbc类 

选择单文档,要求涵盖数据库(查看数据库使用文件支持),在人间点击数据源,选择刚刚创建的数据源,
同对应的发明,基本就这样

举行的是只登陆框主页面验证登陆,注册按钮蹦出单对话框为报页面;
脚是首要,弄了好几上才知道,在单文档主页面如下图片 1

少数个编辑框添加成员变量为m_name,m_pwd;为报到按钮上加消息相应函数
内容如下

UpdateData(TRUE);//刷新控件的价到相应的变量 
if(m_name==m_pSet->m_column1&&m_pwd==m_pSet->m_column2)
//与数据库进行比较对m_column1为数量库
用户名字段 m_column2为数据库 密码字段
MessageBox(“OK”);//成功弹出ok
else
MessageBox(“ERROR”);//失败弹出error 这里说一样下m_pSet
这个是CRecordset类吃的指针 第二只要求为点击注册按钮弹来挂号页面,这里自己新建一个对话框
,添加一个dialog,如下

图片 2

呢寡单编辑框设置成员变量为 m_name_zhuce 和 m_pwd_zhuce,
夫对话框要继承哪个类为? Crecordview?Crecordset?还是 CDialog?

1.先是种植状态:为了能够使用m_pSet 对话框继承
 Crecordview类或者Crecordset类,问题出了当主窗口的报按钮里之代码
正常啊新建一个会话框叫SecondDialog,它的接近名叫SecondDialog。
双击主对话框上之注册按钮进入代码编辑区。
NO.1把SecondDialog.cpp的#include “SecondDialog.h”
加入到主对话框”类”中,
要在#include “stdafx.h”后 
NO.2、在按钮事件里写下面两词代码CSecondDialog dlg; dlg.DoModal();
诸如此类即使好于点击 注册按钮后 弹出挂号对话框了  
唯独于Crecordview类或者Crecordset类
里没有DoModal()这个函数 
于是按照地方的代码,无法编译通过 
怎么收拾吧?是休是透过
其它措施也?showWindows()这个函数是匪是会管其显得出来也? 
2.亚种情况:仍然连续CDialog类,这样可以运用CSecondDialog dlg; 
dlg.DoModal();了
何以给这是对话框连接数据库也?这里就是用上 MFC 封装的odbc类了,
留神下边的代码了,每一个我还加以注了,很累滴 UpdateData(TRUE);
//更新控件信息
CDatabase base1; // 创建CDatabase类 对象
//通过对象去老是数据库 
// 数据源名称,独占打开?只读打开?数据源信息,加载ODBC光标动态连接库 ?
base1.Open(NULL,FALSE,FALSE,”ODBC;DSN=登陆框;UID=NULL;PWD=NULL”,FALSE);
CRecordset object(&base1); //构造记录集对象object(关联记录集)
//这里而运用具体的类,我修的工里 是CStuSet
object(&base1)CStuSet继承CRecordset
//记录集对象object 以动态方式打开student表所有字段,获取数据库数据
object.Open(CRecordset::dynaset,“Select * from students”);

//进行询问操作 ,查询才关联的表
object.m_strFilter=”name=’admin'” 
//m_strFilter相当于where 查询姓名也admin的数码
object.m_strSort=”name” //m_strSort相当于order by 依据name 排序
object.Requery();  //重新建记录集
// void MoveNext( )前进一个记下; void MovePrev( )后退一个记录; 
//void MoveFirst( )滚动到记录集中之率先独记录;  
//void MoveLast( )滚动到记录集中的结尾一个笔录//进行添加操作
object.AddNew(); 
//在表尾进行添加操作
object.m_column1=”admin”;
//为字段1赋值
object.m_column2=”123″;
//为字段2赋值
object.Update();
//新记录存入数据库
object.Requrey();
//重新建立记录集 //进行删除操作
//调用Delete()成员函数能够落实记录删除,在调用Delete()函数后不需要调用Update()函数,
 object.Delete();  
if (!object.IsEOF())   //判断光标是否在记录集最后
object.MoveNext();  //不是则于下转移一员
else  
object.MoveLast(); //是的化滚动到最终一个记下//写及此很麻烦了,要下课了,明天此起彼伏吧

挺丧气,写了未保存,这是第二满了 烦, 3.叔栽情况 
照例采用CDialog类 来开登记对话框,继续下数据源,不用代码连接数据库
CLoginView *p=new CLoginView;
//这个CLoginView继承CRecordView类,创建工程时打好
// 实例化类的目标 为指针 p
p->m_pSet = new CLoginSet;
p->m_pSet-> Open();
p->m_pSet->AddNew();
//对记录集中之字段赋值
p->m_pSet->m_column1 = “wocao”;
p->m_pSet->m_column2 = “123”;
//更新记录集,将新记录存入数据源
p->m_pSet->Update();
//刷新记录集,并要记录集指针回到第一修记下
p->m_pSet->Requery();在编译时会见报错,基类中class CLoginSet :
public CRecordset 就是其一看似产生一对凡个体的
无奈使用 ,我一直改动成为国有的,ok了  4.季种植情景
再也绝些,直接建立对话框mfc,不带有数据源,全部用代码实现
对话框 确定以钮 消息响应函数 如下 CDatabase base1; // 创建CDatabase类
对象
//通过对象去老是数据库 
// 数据源名称,独占打开?只读打开?数据源信息,加载ODBC光标动态连接库 ? 
base1.Open(NULL,FALSE,FALSE,”ODBC;DSN=登陆框”,FALSE);
CRecordset object(&base1); //构造记录集对象object(关联记录集)
//我这边用的是CStuSet object(&base1); 是继往开来CRecordset类
//记录集对象object 以动态方式打开student表所有字段,获取数据库数据
object.Open(CRecordset::dynaset,”Select * from 登录表”);
CString sql=”INSERT INTO
登录表(用户名,密码) VALUES(‘laji2′,’123’)”;

base1.ExecuteSQL(sql);这样简单多矣吧,ExecuteSQL这个函数就是因此来实施SQL代码的,SQL语句不会见便融洽查吧,要注意的是
access 和 其它数据库 语法或来几小不同,自己小心吧,
同两全了,odbc就顶此吧     

 

相关文章