求教MFC对话框中如何将数据写入数据库中

求教MFC对话框中如何将数据写入数据库中,第1张

CString Filepath="Data.accdb"

int i=m_list.GetItemCount()//在列表的队尾添加,所以先获取行数

db.Open(Filepath)

Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM DataTable",0)

Dbset.AddNew()//在记录集的队尾添加

Dbset.SetFieldValue("Name",_variant_t(m_name))

Dbset.SetFieldValue("Age",atol(m_age))//将CString格式转换为数据库规定的格式

Dbset.SetFieldValue("Extra",_variant_t(m_extra))

Dbset.Update()//一定要及时更新

Dbset.Close()

db.Close()//并关闭////////////////////////////

看这段代码,是把三个edit控件里的值写入Data.accdb数据库文件中。

1.可以使用ADO连接数据库,具体的知识还比较的多,所以建议随便找本mfc的书本看看,可以直接使用mfc向导里的选项,非常方便的。

2.使用odbc连接数据库,较于复杂,而且速度明显无ado快(顺便吐槽一下odbc在windows程序开发中就是鸡肋,从来都很少有人用的。)

cdatabase::open;

virtual

bool

open

(

lpctstr

lpszdsn,

bool

bexclusive

=

false,

bool

breadonly

=

false,

lpctstr

lpszconnect

=

“odbc”,

bool

busecursorlib

=

true

)

throw(

cdbexception,

cmemoryexception

)

参数含义:

lpszdsn指定了数据源名,在lpszconnect参数中也可包括数据源名,此时lpszdsn必需为null,若在函数中未提供数据源名且使lpszdsn为null,则会显示一个数据源对话框,用户可以在该对话框中选择一个数据源.

bexclusive说明是否独占数据源,由于目前版本的类库还不支持独占方式,故该参数的值应该是false,这说明数据源是被共享的.

breadonly若为true则对数据源的连接是只读的.

lpszconnect指定了一个连接字符串,连接字符串中可以包括数据源名、用户帐号(id)和口令等信息,字符串中的"odbc"表示要连接到一个odbc数据源上.

busecursorlib若为true,则会装载光标库,否则不装载,快照需要光标库,动态集不需要光标库.

参考代码:

#include

"afxdb.h"

cdatabase

database

cstring

sdriver

=

"microsoft

access

driver

(*.mdb)"

cstring

sdsn

cstring

sfile

=

"c://works//readdb//test.mdb"//change

path

here

//

create

odbc

connection

dinamically

sdsn.format("odbcdriver={%s}dsn=''dbq=%s",sdriver,sfile)

//

open

the

database

database.open(null,false,false,sdsn)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6422813.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-21
下一篇 2023-03-21

发表评论

登录后才能评论

评论列表(0条)

保存