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类

选择单文档,要求包含数据库(查看数据库使用文件支持),在下方点击数据源,选择刚才创建的数据源,
和相应的表,基本就这样

做的是个登陆框主页面验证登陆,注册按钮蹦出个对话框为注册页面;
下边是重点,弄了好几天才明白,在单文档主页面如下

两个编辑框添加成员变量为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,如下

为两个编辑框设置成员变量为 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就到这里吧     

ODBC连接数据库实例的更多相关文章

  1. .NET连接数据库实例

    .NET连接数据库实例 keleyi.com 柯乐义 本实例实现了从MSSQL 2005数据库读取数据并显示在页面上的功能.在Visual Studio 2010上测试成功.源代码下载:http:// ...

  2. C# -- 使用ODBC连接数据库

    C# -- 使用ODBC连接数据库 public class ODBCHelper { public static string conString1 = "Dsn=sqlServerDsn ...

  3. MATLAB通过ODBC连接数据库方法

    MATLAB通过ODBC连接数据库方法 1.首先创建数据库,我在这里用到的是MySQL 8.0 2.建立ODBC数据源,参考链接: https://www.cnblogs.com/benpao1314 ...

  4. odbc连接数据库

    using System; using System.Collections.Generic; using System.Text; using Console = System.Console; u ...

  5. PowerDesigner如何连接数据库--odbc连接数据库用法

    先下载msi   https://dev.mysql.com/downloads/connector/odbc/ 注:如果不成功,有可能msi版本问题,可以更换一下msi 前期准备 双击odbc的ms ...

  6. asp.net 通用的连接数据库实例代码

    asp.net中数据库连接代码,有需要的朋友可以参考一下. <%@ Page Language="C#" AutoEventWireup="true" C ...

  7. 【笔记】LR配置ODBC连接数据库进行参数化(mysql )未完待续

    很多时候我们需要大量的参数数据,但是光光靠手填写是非常麻烦的,既然被测对象的数据都在数据库,那么我们直接读取数据库回来就轻松简便很多. data  wizard 提供了一个从ODBC的连接获得数据转化 ...

  8. Java实现JDBC连接数据库实例

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sq ...

  9. .net 连接数据库实例

    web.config配置 <appSettings> <add key="ConnectionString" value="server=.;datab ...

随机推荐

  1. Django框架初体验

    前言 从今天开始学习测试开发知识,并会把每一次学习的过程和成果记录到博客,由于我也没怎么接触过python相关的开发框架,所以前期应该是艰难的,但是我相信努力就会有收获,如果你和我一样是个小白,那我们 ...

  2. [思维导图] C标准库

  3. 鉴于崔庆才大大的对于 beautifulsoup 的再理解

    源地址看 soups = BeautifulSoup(html) soup = BeautifulSoup(open('index.html')) print soup.prettify() Tag通 ...

  4. JS 头像显示

    HTML <div class="form-group"> <label class="col-sm-3 control-label"> ...

  5. [洛谷P4617] [COCI2017-2018#5] Planinarenje

    Description \(Mirko\) 和 \(Slavko\) 喜欢一起去远足. \(Mirko\) 偏好攀登山峰,而 \(Slavko\) 偏爱山谷.因此每次他们登上一座山峰后,\(Slavk ...

  6. mysql使用唯一索引避免插入重复数据

    使用MySQL 索引防止一个表中的一列或者多列产生重复值 一:介绍MYSQL唯一索引 如果要强烈使一列或多列具有唯一性,通常使用PRIMARY KEY约束. 但是,每个表只能有一个主键. 因此,如果使 ...

  7. python类型-集合

    集合对象是一组无序排列的可哈希的值,集合成员可以做字典的键.集合有两种类型:可变集合,可以添加和删除元素,可变集合不是可哈希的,不能用作字典的键也不能作为其它集合中的元素:不可变集合相反,有哈希值,可 ...

  8. JAVA中值传递,引用传递

    刚在写一个用例,需要在方法中改变传递的参数的值,可是java中只有传值调用,没有传址调用.所以在java方法中改变参数的值是行不通的.但是可以改变引用变量的属性值. 可以仔细理解一下下面几句话: 1. ...

  9. xsd 和 wsdl

    xsd : 可用方便 不同的语言之间的 用命令行来 转换对应语言的. wsdl: 可用方便不同语言的类描述 用命令行 来相互转换. 类似 thift me ?

  10. 基于bootstrap和knockoutjs使用 mvc 查询

    这是我摘抄的码 http://pan.baidu.com/s/1nvKWdsd