怎么连接数据库?
我现在想做一个数据库应用程序:程序外客+数据库
现在数据库表已建完,已注册过
当我用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




