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()
//将记录移到下一行
}
}
本程序是自动注册数据源的,当然可以手动注册数据源,关于如何注册数据源并不麻烦,叙述起来不太方面,你就参考其他的吧。不过建议不用手动注册数据源,这样你地程序移植性不好.
access我没连过 我只连过sql2000我把我那时候找到的资料发上来给你参考下 看看可以借鉴不
MFC 连接SQL SERVER(ODBC方式)
1、建立数据库
这一步比较简单,直接打开SQL Server Management Studio,根据自己需要设计数据库中的表,及其之间的依赖关系等等!要想设计一个完美的数据库,就必须了解数据库的基本知识。这里不再具体说了。这里我们假设我们的数据库名字为Test01
2、配置数据源
数据库设计建立完成后,它只是单独的几张表,我们并不能在程序中去访问它,因为程序并不知道数据库在哪里。因此,就要在应用程序跟数据库之间建立连接。
配置数据源说通俗了就是为数据库创建一个对外的窗口,应用程序通过这个窗口来访问数据库中的数据。具体配置步骤为:
1) 打开 控制面板--〉管理工具--〉数据源,在用户DSN面板选择 “添加”
2) 在数据源驱动程序中选择 “SQL Server” --〉完成,即打开 “创建到SQL Server 的新数据源”
3) 在“数据源名称”中填入名称,我们填 TestSQL01,然后选择 服务器,在其中选择要连接到的SQL Server服务器。(如果你电脑的SQL Server服务打开的话,就会有自己的主机名。或者选择网络上的某个SQL Server。
4) 点击 下一步 配置认证信息
5) 配置完后点击 下一步, 选中 “更改默认的数据库为”复选框,在下拉中选择自己刚才建立的要连接的数据库。 (这一步很重要,一般一个Server上会有多个数据库,如果不更改数据源的默认数据库,你 建立的数据源将连接到默认的数据库,这样就会造成程序中执行SQL语句时“对象名无效”的错误,即找不到你指定的数据表等)
6) 选择完数据库后直接 下一步--〉完成 就完成了数据源的配置。接下来会出现配置数据源的基本信息,可以通过 “测试数据源”来测试数据源是否配置成功。
3、 数据库的连接
建立完数据库,又配置好了数据源,接下来就可以在程序中通过数据源来访问数据库了。
1) 首先要在程序中引入MFC ODBC数据库的定义文件#include <afxdb.h>
2) 定义CDataBase数据库对象, CDataBase m_db
3) 利用CDataBase类的OpenEx函数建立和数据库的连接;
m_db.OpenEx(_T("DSN=TestSQL01"),CDatabase::noOdbcDialog)
/*这里的TestSQL01 即为步骤2中建立的数据源,然后根据OpenEx函数格式填入参数,主要是用户名、密码之类,这里没有设置,所以就没有*/
具体连接还要捕捉OpenEx可能抛出的异常:
TRY
{
m_db.OpenEx(_T("DSN=TestSQL01"),CDatabase::noOdbcDialog)
rs.m_pDatabase = &m_db
}
CATCH(CDBException,ex)
{
AfxMessageBox(ex->m_strError)
AfxMessageBox(ex->m_strStateNativeOrigin)
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError()
AfxMessageBox(_T("memory exception"))
}
AND_CATCH(CException,e)
{
TCHAR szError[100]
e->GetErrorMessage(szError,100)
AfxMessageBox(szError)
}
END_CATCH
4、 数据库 *** 作
在完成了上面的步骤后,就可以使用SQL语句对数据库进行 *** 作了。基本的 *** 作有 查询、添加、修改、删除等。这里主要说一下查询,其他 *** 作都与添加步骤类似。
1)查询
查询的基本步骤可以看下面的这段代码:
CString sql = _T("SELECT Password FROM UserInfoWHERE (UserID = 123“) //要执行的SQL语句
CString psd //存放查询结果
TRY
{
rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql) //打开查询记录
rs.GetFieldValue(_T("Password"),psd) //得到数据
}
CATCH(CDBException,ex)
{
AfxMessageBox(ex->m_strError)
AfxMessageBox(ex->m_strStateNativeOrigin)
}
AND_CATCH(CMemoryException,pEx)
{
pEx->ReportError()
AfxMessageBox(_T("memory exception"))
}
END_CATCH
2)插入
相对于查询,插入、删除、更改 *** 作就简单得多了。CString sql = _T("USE Test01 INSERT UserInfo(UserID,UserName) VALUES(" 123, 'Bob')
try
...{
m_db.ExecuteSQL(sql)
}
..............
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)