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
陆拾三个人的同校打开数据源,单击“添加”按钮后,是还是不是不曾驱动,去那里
C:\Windows\SysWOW64\odbcad32.exe    三二十一人数据源

那样数据源就添加事业有成了

创立程序  本次经过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(“ELANDRO汉兰达”);//失利弹出error 那里说一下m_pSet
那几个是CRecordset类中的指针 第1个供给为点击注册按钮弹出挂号页面,那里本身新建多少个对话框
,添加二个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.二 、在按钮事件之中写上面两句代码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( )前进2个记录; 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(); //是的化滚动到最后2个记录//写到这里很累了,要下课了,前天卫冕吧

很不幸,写完未保存,那是第③回了 烦, 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 和 其余数据库 语法大概有个别小不相同,自身小心啊,
十110日了,odbc就到此地吧     

 

相关文章