加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱资讯网 (https://www.52junxun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

ODBC连接数据库实例

发布时间:2022-10-31 12:36:11 所属栏目:MySql教程 来源:
导读:  为两个编辑框设置成员变量为 m_name_zhuce 和 m_pwd_zhuce,

  这个对话框要继承哪个类呢? Crecordview?Crecordset?还是 CDialog?

  1.第一种情况:为了能使用m_pSet 对话框继承 Crecordview类或
  为两个编辑框设置成员变量为 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就到这里吧。
 

(编辑:我爱资讯网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!