
//////////////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是连接数据源的那个类
比如在你的工程目录中建一个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=myimagedbq=dbf\\vir.mdbdefaultdir=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()
//将记录移到下一行
}
}
本程序是自动注册数据源的,当然可以手动注册数据源,关于如何注册数据源并不麻烦,叙述起来不太方面,你就参考其他的吧。不过建议不用手动注册数据源,这样你地程序移植性不好.
你首先安装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
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)