① MFC ODBC 数据库编程
m_rsDataSet.m_strFilter="Desk_code='"+m_strCode;
m_rsDataSet.m_strFilter+="'";
外面一个双引号表示字符串,里面一个单引号是字符串中的一个符号。
这么说吧,如果m_strCode是abc的话
那么通过这两句后,
m_rsDataSet.m_strFilter的值就是Desk_code='abc'
这两个单引号是给数据库用的。在sql语句中表示一个字符串
② MFC ODBC数据库编程
给你个实例 只是一部分 应该有你要的全部东西了 至于变量与控件关联,用一下VC6.0的winzard就 会明白了 快捷键 ctrl+w
//////////////cpp部分
BOOL Subjectdlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CString sqlStr;
sqlStr="SELECT * FROM tb_subject";
mysubjectset = new Subjectinfo(&((CStudentsysApp*)AfxGetApp())->m_DB);
if(!mysubjectset->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr)) //打开数据表
{
AfxMessageBox("tb_subject表打开失败!");
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
bool Subjectdlg::DisplayRecord()
{
if(mysubjectset->IsEOF()&&mysubjectset->IsBOF()) //判断是否移动到了开头和结尾
{
m_subjectname = "";
m_subjectid = "";
}
else
{
if(mysubjectset->IsBOF()) //移动到了开头,就向后移动
{
mysubjectset->MoveNext();
}
else //否则前移
{
if(mysubjectset->IsEOF())
{
mysubjectset->MovePrev();
}
}
}
m_subjectname = mysubjectset->m_subject; //对应变量赋值
m_subjectid = mysubjectset->m_code;
UpdateData(FALSE);
return TRUE;
}
////////////那几个指针
Subjectinfo* mysubjectset;
Subjectinfo* mysubjectset_find;
Subjectinfo* myclass_subject_findref;
///////////
subjectinfo是连接数据源的那个类
③ mfc 中对数据库(ODBC)的操作
添加个数据库类,然后进行相关操作即可。这有什么难。
问题描述不清晰:用的什么数据库?
④ MFC中怎样ODBC将数据库连接到对话框程序
把这句话改了
if(!db1.open(_t("用户"),false,false,_t("凳瞎odbc;"燃弯),false))
倒数第二皮粗闷个参数,不仅传那个,还要传一个odbc连接字符串。
比如"odbc;dsn=数据源名称;uid=用户名;pwd=密码"
其次,建议你不要使用汉字作为数据源名称,因为汉字的编码问题,兼容性不好,很容易出现错误!
⑤ 请教高人 c++ MFC ODBC与数据库连接的问题
数据库编程的思路都是一致的:打开数据库连接-》执行SQL语句-》获得查询结果-》关闭数据库连接,不同的数据库访问技帆并术有不同的要求,比如用CAPI诘问MySql数据库的时候还得释放查询结果集。
ODBC访问数据库得配置数据源
配置ODBC数据源:打开控制面板下的“数据源”,弹出“ODBC数据源管理器”,选择DSN选项卡-》添加->你选择你的SQLServer选项,单击完成。如图然后你再按照向导提示添加。
代码中用ODBC访问数据库你得加上afxdb.h头文件,
用CDataBase类连接数据库、CRecordSet类查询记录。
现在在VC访问数据库常用的是ADO访问,你可以找一下我前面的回答有ADO访问数据库的步骤。
CDataBasem_cODBCDb;
用CDataBase类的OpenEx()函数打开闷轿歼数据库连接。连接字符串你自己构造一下。
定义一个与上面数据库相关的查询对象
CRecordSetm_cODBCRec(&m_cODBCDb);
用这个查询对象的open方法就可以执行SQL语句与数据库交互了;
现在用VC、MFC访问数据库常用的技术是ADO,学学这个吧。难点、但很实用!
导入ADO库
#import"c:.dll"no_namespacerename("EOF","adoEOF")
2、用导入的动态库的指针操作数据库.
打开数据库连接
_ConnectionPtrm_pConn;//数据库连接指针
//创建Conneciton对象
m_pConn.CreateInstance(_T("ADODB.Connection"));
用ConnectionPtr的open方法m_pConn->Open(_bstr_t(m_sConn),
_T(""),_T(""),lOptions));
m_sConn为你连接数据库的信息,你应该按照你的要求打开数据库
然后你用打开的那个连接进行操作数据库。比如
_RecordsetPtrpRec=m_pConn->Execute(_bstr_t(pszSql),NULL,CmdText);
pszSql就你要操作数据库蚂冲的SQL语句。在这个SQL语句里你可以创建表、更新表等。
用ADO访问的时候要求初始他COM库和释放COM对象
//初始化COM环境(库)
::CoInitialize(NULL);
//释放COM对象
::CoUninitialize();
⑥ 用MFC怎么用odbc 连接SQL数据库,求详解啊
首先你把数据源配置好,具体过程在网络上可以搜到,先建一个数据库,添加好你要用到的表,然后在里面选择SQL server,这些就不说了,具体在MFC中连接的时候,首先你建一个MFC项目,启运辩把你要用的对话框弄好,再新建里面找MFC ODBC使用者,会出现选悄缺择数据源的对话框,在里面找你要用到的数据库,确定后会出现选择数悄顷据库对象的对话框,可能会出现登陆的对话框,选择你要用的数据库对象就可以了,说的不是很详细,没有实际的做,凭印象的,希望可以帮到你
⑦ MFC中怎样ODBC将数据库连接到对话框程序
“未发现数据源名称并且未指定默认的驱动程序”
这个问题我也遇到过,但是在运行过一次证明能连上数据库之后出现的。这说明你的ODBC连接时静态的,就是每次程序在另一台电脑上运行时就需要重新连一下ODBC数据库。
如果你的程序没有运行过一次就裤芦搭报错,问题可能出现在两点:
1、创建ODBC数据源
你可以按照如下方法重新创建一次。单击开始—>设置->控制面板->管理工具,在其中打开“数据源”(ODBC)在找到ODBC之后会弹出一个“胡拿ODBC数据源管理器”对话框,添加数据源-〉选择数据源的驱动程序。这个软件的数据库使用的是Access,所以选择Micrsoft Access Driver(*.mdb )单击“完成”按钮,在弹出的新对话框中填入你的数据源名,单击“选择”按钮,在弹出的的“选择数据库”对话框中选择你所建的数据库(找到数据库所保存的位置)哗裤,单击“确定”按钮返回,然后单击“确定”,创建ODBC数据源完成。(注意,这里创建的数据源是Access的)。
2、是SQL语言
首先在StdAfx.h 中添加如下代码:
#include <odbcinst.h>//ODBC数据库API头文件
#include <afxdb.h>
然后在CXXAPP::InitInstance()中加添
SQLConfigDataSource(NULL,ODBC_ADD_DSN,
"Microsoft Access Driver (*.mdb)",
"DSN=数据源名称\0"
"Description=Hotel\0"
"FileType=Access\0"
"DBQ=.\\数据源名称.mdb\0"
);
按照这种方法你再试试,注意创建数据源时的数据源名称要与SQL语句中的数据源名称要一致。我知道的就这么多,希望能帮上你。
⑧ C++ODBC MFC编程数据源的显示中,绑定了数据表,却只能显示第一列的数据。怎么才能让它全部显示出来。
应该是基于CRecordView才行,这样睁渗系统会自动生成一个相应的***Set类,里面有你数据源中的所有字段和变量,同时View类里会有个自动生成的m_pSet指针,是Set类里的,这个指针直接可以操作数据库。比如我要把数据库的数据全部显示到一个报表,就是这样:
m_pSet->MoveFirst();
m_list.DeleteAllItems();//m_list是报表关联的Control型变量
do
{
CString s,s1,s2;
s.Format("%d",i+1);
s1.Format("%ld",m_pSet->m_stuId);
s2.Format("%ld",m_pSet->m_stuFamilyNum);//腔厅这4条是变量类型的转换
m_list.InsertItem(i,s);//i是一个全局变量,初始值为0,用来伍早隐计数的
m_list.SetItemText(i,1,s1);
m_list.SetItemText(i,2,m_pSet->m_stuName);
m_list.SetItemText(i,3,m_pSet->m_stuSex);
m_list.SetItemText(i,4,m_pSet->m_stuProfession);
m_list.SetItemText(i,5,m_pSet->m_stuClass);
m_list.SetItemText(i,6,m_pSet->m_stuHobby);
m_list.SetItemText(i,7,m_pSet->m_stuAddress);
m_list.SetItemText(i,8,s2);//向报表插入数据库的数据,也就是读取数据库
i++;// i 递增
m_pSet->MoveNext();//指针后移
} while(!m_pSet->IsEOF());
m_pSet->Close();
⑨ C++ MFC编程,ODBC连接SQL后,怎么让SQL数据库备份与恢复
void CMainFrame::OnBackup()
{
// TODO: Add your command handler code here
CDatabase db;
CString filename;
//构造保存文件对话框
CFileDialog filedlg(false,"",NULL,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"*.*");
if (filedlg.DoModal()==IDOK) //弹出对话框
{
filename=filedlg.GetPathName(); //获取保银察存文件的路径
if (filename!="")
{
CString strSQL;
strSQL.Format("ODBC;UID="";PWD=""; "); //默认用户名和密码
db.Open("mystudent",false,false,strSQL);
strSQL.Format("backup database student to Disk='%s'",filename); //备份数据库
db.ExecuteSQL(strSQL);
AfxMessageBox("数据库备郑冲份成功!\r\n 文件路径为:"+filename);
}
}
else return;
}
void CMainFrame::OnRecover()
{
// TODO: Add your command handler code here
CDatabase db;
CString filename;
//构造打开文件对话框
CFileDialog filedlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"所有文件(*.*)||",NULL);
if (filedlg.DoModal()==IDOK)
{
filename=filedlg.GetPathName(); //获取打开文件的路径
if (filename!="")
{
CString strSQL;
strSQL.Format("ODBC;UID="";PWD=""; ");
db.Open("mystudent",false,false,strSQL);
strSQL.Format("restore database report from disk='%s'",filename); //还喊搏歼原数据库
db.ExecuteSQL(strSQL);
AfxMessageBox("数据库还原成功");
}
}
else return;
⑩ 用 visual c++ MFC 编程 用到一个ODBC的数据库 如果将程序以及数据库全部拿到另一台电脑上还能用吗
可以的,ODBC的数据源可以是mdb文件则脊老,那么只需要把文件路径设置正确就可以,如果是SqlServer,那野孝么目孙升标机器上必须安装SqlServer才行