CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  数据库

怎么连接数据库?

楼主hshhgh(阿坤)2002-10-30 21:39:14 在 VC/MFC / 数据库 提问

我现在想做一个数据库应用程序:程序外客+数据库  
      现在数据库表已建完,已注册过  
   
  当我用appwizard建一个对话框模式(非单,多文档)的外壳程序时,appwizard没有提供连数据库的功能,我该怎样将数据库连接到外客程序上? 问题点数:90、回复次数:9Top

1 楼small_wei(small)回复于 2002-10-30 21:42:18 得分 20

用ODBC  
  在stdafx.h中加入  
   #include   <afxdb.h>    
  1、用classwizard->add   class->new,在base   class中选择CRecordset,再选择数据库中的相应表   classzizard就可以根据数据库表重载CRecordset。  
  2、不用重载CRecordset   :  
  CDatebase   db;  
  db.Open("...");  
  CRecordset   rs(&db);  
  CDBVariant   dd;  
  double   d;  
  rs.Open(CRecordset::forwardOnly,"select   *   from   tablename   ",CRecordset::readOnly);  
  rs.GetFieldValue("field_name",dd);  
  if   (db.m_dwType==DBVT_DOUBLE)//浮点数据  
        d   =   dd.m_dblVal  
  ......  
  相关的细节可在MSDN中的recordset项查到  
  Top

2 楼yangbit(公司扣我工资做奖金)回复于 2002-10-31 11:15:23 得分 10

.............................  
  补充一点,上面的例子2是只读,单向读取数据库的,另外如果要用SQL的话要注意格式。Top

3 楼52001314(不当程序员了)回复于 2002-11-01 09:17:44 得分 0

呵呵,借用搂主的地方提个问题。  
   
  不用重载CRecordset   的时候,是不是Open的属性只能用  
  CRecordset::forwardOnly?只能由前向后移啊?这样,不能用MoveFirst了。  
  当我移到纪录末尾,想移到第一条,该怎么办?重新Open()吗?还是Requery()就行了?  
  Top

4 楼zhang865(老人家慢走)回复于 2002-11-01 13:48:22 得分 0

同意上面的,我前几天刚给一个人发了个例子,  
  你要么,  
  MFC+ODBC的,  
  zhang865@sohu.comTop

5 楼small_wei(small)回复于 2002-11-01 22:09:57 得分 20

to   52001314(passenger)   :  
  rs.Open(CRecordset::forwardOnly,"select   *   from   tablename   ",CRecordset::readOnly);  
  第一个参数是可选的,不单单是只读,在程序中,只读打开要比动态打开时读取记录的速度快很多。Top

6 楼hshhgh(阿坤)回复于 2002-11-03 19:57:49 得分 0

zhang865(小土,跟我斗!)    
  我要!Top

7 楼zhang865(老人家慢走)回复于 2002-11-04 13:25:40 得分 0

你给我E-MAIL就好了,  
  zhang865@sohu.comTop

8 楼aben456(金珠MERP)回复于 2002-11-04 14:59:11 得分 20

1.建立ODBC数据源:mydb,连接到远程或本机的数据库,如果是access就找到该文件即可。  
  2.在stdafx.h最后面加:#include   "afxdb.h"  
  3.在你的C**DLG的CPP文件里,在INCLUDE之后添加你的CDATABASE   DB;  
  并在INTIDLG函数里面把它跟数据库建立连接,假如你的数据源已经配好:MYDB  
  4.if(!db.OpenEx(_T("DSN=mydb;UID=sa;PWD=pwd"),   CDatabase::noOdbcDialog   ))  
  {  
  AfxMessageBox("数据库打开失败");  
  return   FALSE;  
  }  
   
  如果没有报错,数据库已经连上;你就  
  db.ExecuteSQL("CREATE   DATABASE....");  
  Top

9 楼aben456(金珠MERP)回复于 2002-11-04 15:08:17 得分 20

或者得到数据库字段:  
  CString   str1;  
  Recordset   rs(&db);  
  try{  
  rs.Open("select   *   from   table1");  
  rs.GetFieldValue("parm1",   str1);  
  }catch(CDBException   ce)  
  {  
      ce->m_strErr;  
      ce->Delete();  
  }Top

相关问题

  • 怎么连接数据库
  • jsp怎么和mysql数据库连接?????
  • 怎么连接SQL SERVER数据库
  • 怎么连接sql数据库
  • asp怎么连接sql server数据库?
  • VB中怎么样连接数据库
  • DWUltra 中怎么连接数据库?
  • tomcat4怎么连接oracle数据库
  • 连接sql数据库怎么写?
  • VB怎么连接SQL数据库???

关键词

  • 数据库
  • 连接
  • 数据
  • ce
  • db
  • crecordset
  • 重载
  • forwardonly
  • zhang865
  • 程序

得分解答快速导航

  • 帖主:hshhgh
  • small_wei
  • yangbit
  • small_wei
  • aben456
  • aben456

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo