当前位置:首页 » 操作系统 » mfc数据库

mfc数据库

发布时间: 2022-01-09 10:59:46

A. 关于数据库与Mfc的链接

数据库编程的思路都是一致的:打开数据库连接-》执行sql语句-》获得查询结果-》关闭数据库连接,不同的数据库访问技术有不同的要求,比如用C API诘问MySql数据库的时候还得释放查询结果集。
ODBC访问数据库得配置数据源

配置ODBC数据源:打开控制面板下的“数据源”,弹出“ODBC数据源管理器”,选择DSN选项卡-》添加->你选择你的SQL Server选项,单击完成。如图然后你再按照向导提示添加。

代码中用ODBC访问数据库你得加上afxdb.h头文件,
用CDataBase 类连接数据库、CRecordSet类查询记录。
现在在VC访问数据库常用的是ADO访问,你可以找一下我前面的回答有ADO访问数据库的步骤。

CDataBase m_cODBCDb;
用CDataBase类的OpenEx()函数打开数据库连接。连接字符串你自己构造一下。
定义一个与上面数据库相关的查询对象
CRecordSet m_cODBCRec(&m_cODBCDb);
用这个查询对象的open方法就可以执行SQL语句与数据库交互了;

现在用VC、MFC访问数据库常用的技术是ADO,学学这个吧。难点、但很实用!

导入ADO库
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "adoEOF")
2、用导入的动态库的指针操作数据库.
打开数据库连接
_ConnectionPtr m_pConn; // 数据库连接指针
// 创建Conneciton对象
m_pConn.CreateInstance(_T("ADODB.Connection"));
用ConnectionPtr 的open方法m_pConn->Open(_bstr_t(m_sConn),
_T(""), _T(""), lOptions));
m_sConn为你连接数据库的信息,你应该按照你的要求打开数据库

然后你用打开的那个连接进行操作数据库。比如
_RecordsetPtr pRec = m_pConn->Execute(_bstr_t(pszSql), NULL, CmdText);
pszSql 就你要操作数据库的SQL语句。在这个SQL语句里你可以创建表、更新表等。

用ADO访问的时候要求初始他COM库和释放COM对象
// 初始化COM环境(库)
::CoInitialize(NULL);
//释放COM对象
::CoUninitialize();

B. 用MFC如何创建和删除数据库的表

void SearchDepartment::OnBnClickedDelete()
{
// TODO: 在此添加控件通知处理程序代码
if(m_list.GetItemCount() == 0)
{
AfxMessageBox(_T("还没有记录"));
return;
}
else if(m_list.GetSelectionMark() < 0 || m_list.GetSelectionMark() > m_list.GetItemCount())
{
AfxMessageBox(_T("请先选择记录"));
return;
} CString temp;
tempStr2 = m_list.GetItemText(m_list.GetSelectionMark(),1);
m_list.DeleteItem(m_list.GetSelectionMark()); m_db.Open(_T("peopleDSN"));
m_rs2.m_pDatabase = &m_db;
m_rs2.Open();
m_rs2.MoveFirst();
while(!m_rs2.IsEOF()){
if(m_rs2.m_dname == tempStr2){
temp = m_rs2.m_dID;
m_rs2.Close();
m_db.Close();
break;
}
else
m_rs2.MoveNext();
} m_db.Open(_T("peopleDSN"));
m_rs.m_pDatabase = &m_db;
m_rs.Open();
m_rs.MoveFirst();
while(!m_rs.IsEOF()){
if(m_rs.m_dID == temp){
m_rs.Delete();
}
else
m_rs.MoveNext();
}
m_rs.Close();
m_db.Close(); m_db.Open(_T("peopleDSN"));
m_rs2.m_pDatabase = &m_db;
m_rs2.Open();
m_rs2.MoveFirst();
while(!m_rs2.IsEOF()){
if(m_rs2.m_dname == tempStr2){
m_rs2.Delete();
m_rs2.MoveFirst();
m_rs2.Close();
m_db.Close();
return;
}
else
m_rs2.MoveNext();
}
}

C. MFC中怎么用SQL更新数据库

初始化引入相关的库+Connection对象的创建和数据库的连接
#import "c:\\Program Files\\Common Files\\System\\ADO\\msado15.dll" rename_namespace("ADOCG") rename("EOF","adoEOF") //rename("BOF","adoBOF")
using namespace ADOCG;
//... ...
_ConnectionPtr m_pConnection;
//... ...
if(!AfxOleInit())
{
AfxMessageBox("初始化OLE DLL失败!");
Return FALSE;
}

m_pConnection.CreateInstance("ADODB.Connection");
try
{
m_pConnection->ConnectionTimeout = 3;
//连接ACCESS2000
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:/Attendence/AttendenceDB.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description() + _T("\n数据库连接失败"));
}
更新记录:
strSql.Format(_T("UPDATE WorkUser SET MemberName = '%s', MemberPosition = '%s' WHERE MemberID = '%s' "),m_StringName, m_StringPosition, m_StringNumber);
try
{

(theApp.m_pConnection)->Execute(_bstr_t(strSql), 0, adCmdText);
}
catch(_com_error e)
{
MessageBox(e.Description());
return;
}

D. MFC连接数据库的方法

你选择了否也可以建立数据。

推荐一篇文章来入门:

http://www.vckbase.com/document/viewdoc/?id=1557

这里是目录,里面应该有你要找的:

http://www.vckbase.com/document/finddoc.asp?mclsid=&sclsid=&page=1&keyword=ado

E. MFC如何用数据库

你首先安装Mysql,然后使用下面代码
在MyProc类中增加MySqlConnect方法,strUSR,strPWD分别为用户名和密码,登陆数据库需要
BOOL MyPorc::MySqlConnect(CString strUSR,CString strPWD)
{
unsigned short Port = 3306; //端口
CString IPAddress ="127.0.0.1"; //本地数据库
CString UserName = strUSR;
CString Password = strPWD;

ssock=(MYSQL *)malloc(sizeof(MYSQL));
mysql_init(ssock);
if(ssock == NULL)
{
AfxMessageBox("连接失败,请稍后在试! ");
return FALSE;
}

ssock = mysql_real_connect(ssock, IPAddress, UserName, Password, NULL, Port, NULL, 0);
if(!ssock)
{
unsigned int mtint = mysql_errno(ssock);
AfxMessageBox("登陆失败! ");
return FALSE;
}
return TRUE;
}

F. MFC怎么与数据库连接,求详细步骤!!!!!急急急!!!!!!

比如在你的工程目录中建一个
dbf\vir.mdb
//access数据库,然后你需要做以下操作:
1.在stadafx.h里面添加#include
//新加入头文件,用于cdatabase类。
2.在stadafx.h最后的#endif上添加#import
"msado15.dll"
no_namespace
rename("eof","rseof")
这时,你要把msado15.dll拷到与dbf同级的目录,也就是工程目录里,当然你可以该路径
3.在你自己的工程里,比如myproc是你建的工程,添加代码
cmyporcapp::cmyprocapp(){
coinitialize(null);
sqlconfigdatasource(null,odbc_add_dsn,
"microsoft
access
driver
(*.mdb)",\
"dsn=myimage;dbq=dbf\\vir.mdb;defaultdir=dbf");
//注册本地数据库数据源
m_db.openex("dsn=myimage;;",cdatabase::noodbcdialog);//myimage是数据源名称
}
4.在前面的函数体之前创建全局变量cdatabase
m_db;
crecordset
m_rec(&m_db);
5.使用数据库{
cstring
strsql="select
*
from
virdb";
bstr
bstrsql=strsql.allocsysstring();
m_rec.open(crecordset::dynaset,strsql);
while(!m_rec.iseof())
{
//
使用数据库的代码,读出来的数据都是字符串型的
cstring
myvirable;
m_rec.getfieldvalue("字段名",myvirable);
//将某个字段的当前行的值读到myvirabl中
//
......
m_rec.movenext();
//将记录移到下一行
}
}
本程序是自动注册数据源的,当然可以手动注册数据源,关于如何注册数据源并不麻烦,叙述起来不太方面,你就参考其他的吧。不过建议不用手动注册数据源,这样你地程序移植性不好.

G. 关于编程和数据库!MFC(C++)

1、在VC上是可以不用数据库做出一个信息管理系统的,比如说从文件读写或者定义数组存储,在VC上可以连接数据库,只要提供相应的数据库驱动。
2、你说的数据库软件是专门用来放数据的,如果系统数据不多,可以用MFC独立实现,多了就得用数据库来存储了。
3、不同的数据库连接有不同的封装体系,具体有ADO/ADO.net、JDBC、ODBC和OLE等,MFC是有对数据库操作进行封装。
4、如果开发没有用到数据库,当然不用了,如果有的话,需要提供数据源。

总结:
数据库开发技术主要有:
1.ODBC API;

2.MFC ODBC类;

3.MFC DAO类;(数据访问对象)

4.MFC的OLE/DB;

5.ActiveX数据对象(ADO)

6.JDBC

H. 如何使用MFC进行数据库查询

问题很简单我给你看看一段代码你就知道了
try
{
CDatabase db;
db.Open(NULL,false,false,"ODBC;DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)};DBQ=手机进销存管理数据库.mdb");
CRecordset rs(&db);
rs.Open(CRecordset::forwardOnly,"select * from Input;",CRecordset::readOnly);
CString s;
rs.GetFieldValue("厂商",s);
MessageBox(s);
}
catch (CDBException e)
{
MessageBox(e.m_strError);

I. mfc中如何连接access数据库 求详细步骤

比如在你的工程目录中建一个 dbfvir.mdb //Access数据库,然后你需要做以下操作:

1.在StadAfx.h里面添加#include <afxdb.h> //新加入头文件,用于CDatabase类。

2.在StadAfx.h最后的#endif上添加#import "msado15.dll" no_namespace rename("EOF","rsEOF")

这时,你要把msado15.dll拷到与dbf同级的目录,也就是工程目录里,当然你可以该路径

3.在你自己的工程里,比如MyProc是你建的工程,添加代码

CMyPorcApp::CMyProcApp(){

CoInitialize(NULL);

SQLConfigDataSource(NULL,ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)",

"DSN=MyImage;DBQ=dbf\vir.mdb;DEFAULTDIR=dbf"); //注册本地数据库数据源

m_db.OpenEx("DSN=MyImage;;",CDatabase::noOdbcDialog);//MyImage是数据源名称

}

4.在前面的函数体之前创建全局变量CDatabase m_db; CRecordset m_rec(&m_db);

5.使用数据库{

CString strSQL="select * from virdb";

BSTR bstrSQL=strSQL.AllocSysString();

m_rec.Open(CRecordset::dynaset,strSQL);

while(!m_rec.IsEOF())

{

// 使用数据库的代码,读出来的数据都是字符串型的

CString MyVirable;

m_rec.GetFieldValue("字段名",MyVirable); //将某个字段的当前行的值读到MyVirabl中

// ......

m_rec.MoveNext(); //将记录移到下一行

}

}

本程序是自动注册数据源的,当然可以手动注册数据源,关于如何注册数据源并不麻烦,叙述起来不太方面,你就参考其他的吧。不过建议不用手动注册数据源,这样你地程序移植性不好.

J. MFC数据库和STL的区别

两个根本不是一个类型的东西啊,虽然都是库。
MFC是微软的基本类库,封装了非常多的底层API,包括窗口操作、文件操作、SOCKET等以及一些辅助类例如CString和一些模板类CList、CArray等。
同时提供了DOC/VIEW的程序框架,并构造了消息的处理线路。

以下内容来自网络:
而STL是Standard Template Library,标准模板库。
从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL现在是C++的一部分,因此不用额外安装什么。

STL被内建在你的编译系统之内。
在C++标准中,STL被组织为下面的13个头文件:<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>和<utility>。

热点内容
怎么看台式电脑配置生产日期 发布:2024-05-08 01:32:26 浏览:458
java基础培训学校 发布:2024-05-08 01:30:44 浏览:465
简单辅助火眼打码如何配置 发布:2024-05-08 01:30:44 浏览:901
我的世界网易版服务器游戏 发布:2024-05-08 01:10:33 浏览:40
csgo中的存储库的功能 发布:2024-05-08 01:05:27 浏览:277
php旅游网站系统 发布:2024-05-07 20:27:32 浏览:611
jdk源码怎么看 发布:2024-05-07 20:18:22 浏览:520
编程c语言自学书 发布:2024-05-07 20:12:03 浏览:423
usb大容量存储驱动 发布:2024-05-07 19:02:01 浏览:816
红米1s没有存储空间 发布:2024-05-07 18:59:09 浏览:506