mfc连接sql
1. 由于使用的是ADO架构 首先需要在StdAfx.h文件中导入msado15.dll 和 oledb32.dll连个动态连接库文件倒入方式为:
#import "msado15.dll" no_namespace rename ("EOF", "adoEOF")
#import "oledb32.dll" no_namespace
两个文件的实际所在位置由于系统安装的位置不同而不同。
no_namespace 使用无名命名空间 程序段比较短关联较少的话可以这样使用 否则请使用命名空间以免发生冲突,
rename ("EOF", "adoEOF") 重命名 EOF为 adoEOF 以免常量冲突。
2. 关于SQL Server以及的一些要求 首先安装SQL Server的机器必须是 NT架构以上的系统 如果使用的是Windows XP SP2 的话需要对SQL Server打上SP4补丁方可网络访问。
3. 最好建立一个单独的数据库操作类 使程序中需要对数据库进行操作的地方继承这个类。
4. 类成员如下
_ConnectionPtr m_pConnection; // 数据库
_RecordsetPtr m_pRecordset; // 命令
_CommandPtr m_pCommand; // 记录
5. 方法如下
bool connect2database();
bool check_user(_bstr_t name, _bstr_t pwd);
bool CBugListCommon::connect2database()
{
_bstr_t ConnectionString = "Provider=sqloledb;Data Source='SQLSERVER';Integrated Security='SSPI';Initial Catalog='Test';User Id='sa';Password='sa';";
//Data Source 数据库实例名
//Initial Catalog表名
//User Id 用户名
//Password 密码
if(FAILED(CoInitialize(NULL)))
return FALSE;
m_pConnection.CreateInstance(__uuidof(Connection));
try
{
m_pConnection->Open(ConnectionString , "", "", adConnectUnspecified);
return TRUE;
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败");
return FALSE;
}
return FALSE;
}
bool CBugListCommon::check_user(_bstr_t name, _bstr_t pwd)
{
_bstr_t cmdtxt = "SELECT User_Name, User_PassWord FROM User_Table WHERE (User_Name = N'";
cmdtxt = cmdtxt + name + "')";
// cmdtxt == SELECT User_Name, User_PassWord FROM User_Table WHERE (User_Name = N'name')
m_pCommand.CreateInstance("ADODB.Command");
m_pCommand->ActiveConnection = m_pConnection;
m_pCommand->CommandText = cmdtxt;
m_pRecordset = m_pCommand->Execute(NULL, NULL, adCmdText);
if(!m_pRecordset->adoEOF)
{
_bstr_t tn;
tn = m_pRecordset->GetCollect("User_PassWord");
if(tn == pwd)
return TRUE;
else
return FALSE;
}
return FALSE;
}
② mfc中连接数据库中插入sql语句问题
m_SqlStr.Format("select * from wanju where 玩具编号=%d",m_no);
m_no 是数字 就要用%d 格式化.
③ 谁会MFC与sql server的连接代码急求
链接数据库的类很好用的。
//头文件
//ADOConnect.h:.
#if!defined(AFX_ADOCONNECT_H__37418759_4445_4343_BA48_2E181C1295A5__INCLUDED_)
#defineAFX_ADOCONNECT_H__37418759_4445_4343_BA48_2E181C1295A5__INCLUDED_
#if_MSC_VER>1000
#pragmaonce
#endif//_MSC_VER>1000
//导入ADO接口
#import"C:.dll"no_namespacerename("BOF","adoBOF")rename("EOF","adoEOF")
//读出COM类型库.tlb文件,编译时系统会生成msado15.tlh和ado.tli
classADOConnect
{
public:
ADOConnect();
virtual~ADOConnect();
voidOnInitDBConn();//初始化-连接数据库
_RecordsetPtr&GetRecordSet(_bstr_tbstrSQL);//执行查询,返回结果集,bstrSQL只要执行的语句
BOOLExecuteSQL(_bstr_tbstrSQL);//执行查询不返回结果集
voidExitConnect();//断开数据库连接
//定义变量
public:
_ConnectionPtrm_PConnection;//指向Connection对象的指针
_RecordsetPtrm_pRecordset;//指向Recordset对象的指针
};
#endif//!defined(AFX_ADOCONNECT_H__37418759_4445_4343_BA48_2E181C1295A5__INCLUDED_)
//cpp文件
//ADOConnect.cpp:.
#include"stdafx.h"
#include"ADOConnect.h"
#ifdef_DEBUG
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#definenewDEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
//Construction/Destruction
//////////////////////////////////////////////////////////////////////
ADOConnect::ADOConnect()
{
}
ADOConnect::~ADOConnect()
{
}
voidADOConnect::OnInitDBConn()
{
//初始化OLE/COM库环境,为访问ADO接口做准备
::CoInitialize(NULL);
try
{
//创建Connection对象的实例
m_PConnection.CreateInstance("ADODB.Connection");
_bstr_tstrConnection="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=ChargeManage;DataSource=localhost";
m_PConnection->Open(strConnection,"","",adModeUnknown);
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
}
}
_RecordsetPtr&ADOConnect::GetRecordSet(_bstr_tbstrSQL)
{
try
{
if(m_PConnection==NULL)
{
OnInitDBConn();
}
m_pRecordset.CreateInstance(_uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_PConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
}
returnm_pRecordset;//返回记录集
}
BOOLADOConnect::ExecuteSQL(_bstr_tbstrSQL)
{
_variant_tRecordsAffected;
try
{
if(m_PConnection==NULL)
{
OnInitDBConn();
}
m_PConnection->Execute(bstrSQL,NULL,adCmdText);
returnTRUE;
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
returnFALSE;
}
}
voidADOConnect::ExitConnect()
{
//关闭记录集和连接
if(m_pRecordset!=NULL)
{
m_pRecordset->Close();
}
m_PConnection->Close();
::CoUninitialize();//释放环境
}
④ 如何用vs中的mfc连接sql server 2008
操作如下:
SQLEXPRESS服务开启或者设置为自动启动.
连接字符串如下:Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Test.mdf;Integrated Security=True;User Instance=True
|DataDirectory|代表app_data数据文件夹相对路径.
比如Test.mdf数据库需要放在app_data文件夹内这样就是相对路径.如果选择MS SERVER 数据库文件就是选择数据库的绝对路径了 。
⑤ VS2010中MFC连接SQL SERVER 2005的问题
m_pCon->ConnectionString="Provider=SQLNCLI.1;Password=自设密码;Persist Security Info=True;User ID=sa;Initial Catalog=MYSQLDB;Data Source=Emplorees";
有问题
末尾处,Data Source=Emplorees应该是你注册的机器名字。例如计算机名称,ip地址什么的。
initial Catalog=MYSQLDB;这里应该是数据库的名字,当然也许你就是这个名字。检查一下。
这是几个典型连接数据库的字符串,你参考一下,c#的:
Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;
Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
Server=myServerName\theInstanceName;Database=myDataBase;Trusted_Connection=True;
Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
⑥ MFC怎么连接MYSQL数据库求详细。。
用ADO连接SQL数据库
步骤如下:
1,在头文件"StdAfx.h"中导入#import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","rsEOF"),记住把这句话放到endif的后面,不然会报错,这样处理好之后,编译后又一个警告,可以忽略
2,在对话框的OnInitDialog()函数中写上"::CoInitialize(NULL);::AfxOleInit(); ” 在主程序的初始化函数中,它就可以写一次
3,在对话框类的头文件中,声明如下变量:_ConnectionPtr m_pConnection;_RecordsetPtr pRst;
连接数据库的代码如下:
try
{
hr=m_pConnection.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
hr=m_pConnection->Open("Provider=数据库的驱动器名称;Integrated Security=SSPI;Persist Security Info=False;Data Source=数据库服务器名;Initial Catalog=连接的数据库名; User ID=登陆数据库的名称;Password=登陆数据库的密码;","","",adModeUnknown);
}
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
”数据库的驱动器名称“在控制面板里,以大图标查看,可以看到一个"ODBC",双击打开,在”驱动程序“里面在最下面有两个”SQL Server"和“SQL Native Client"如果你是2000的SQL版本,就选”SQL Server"及“Provider=SQL Server"2005的"Provider=SQL Native Client"Data Source=? ,?的值可以是”localhost"也可以是你的数据库服务器的名称,连接数据库的时候可以看到,复制一下就可以了。
处理完之后就可以连接到你想要连接的数据库上了!你下次给点分把!!!
⑦ 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();
//将记录移到下一行
}
}
本程序是自动注册数据源的,当然可以手动注册数据源,关于如何注册数据源并不麻烦,叙述起来不太方面,你就参考其他的吧。不过建议不用手动注册数据源,这样你地程序移植性不好.
⑧ mfc连接sqlserver
首先在SQL上创建数据库,以WIN7为例,开始菜单->控制面板->管理工具->数据源(ODBC),在用户DSN选项卡中添加,慢慢点下一步,在验证完身份后会有一个选择数据库的,选中你创好的数据库,测试成功就算配置好了。在MFC dialog中关联一个CDataBase变量,在OnInitDialog()函数里面调用(好像是叫这个名字)OpenDateBase(),还要构造一个CRecordSet对象,用来指向记录集的指针,通过指针来访问记录集的数据,可以用Edit控件显示或者修改记录集。
⑨ 关于MFC 用ADO连接SQL中_ConnectionPtr 未定义
在stdafx.h中添加如下语句
//导入msado15.dll动态库
#import "C:\Program Files\Common Files\System\ado\msado15.dll" rename_namespace("ADODB") ename("EOF","ADOEof")using namespace ADODB ; //应用命名空间