mfc连接sqlserver
‘壹’ 如何用MFC连接数据库sql2008做一个登录的界面和功能啊
您好,您这样:
qlConnectionStringBuilder b = new SqlConnectionStringBuilder();
b.DataSource = @".";//本地数据库
b.IntegratedSecurity = true;
b.InitialCatalog = "northwind";//数据库名
String conStr = b.ConnectionString;
SqlConnection con = new SqlConnection(conStr);
‘贰’ c++与sqlserver数据库怎样连接
HRESULThr=sqlSp.CreateInstance(_uuidof(Connection));
if(FAILED(hr))
{
AfxMessageBox("_ConnectionPtr对象指针实例化失败!!!");
return;
}
else{
try{
_bstr_tstrConnect="Driver={sqlserver};server=192.168.1.29;uid=sa;pwd=ebank@123;database=baoshang;";
sqlSp->Open(strConnect,"","",adModeUnknown);
}
catch(_com_error&e)
{
AfxMessageBox(e.Description());
return;
}
_RecordsetPtrm_pRecordset;
if(FAILED(m_pRecordset.CreateInstance(_uuidof(Recordset))))
{
AfxMessageBox("记录集对象指针实例化失败!");
return;
}
try{
m_pRecordset->Open("select*fromdbo.TB_DICT_CONTTYPE",(IDispatch*)sqlSp,adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error&e)
{
AfxMessageBox(e.Description());
return;
}
try{
m_pRecordset->MoveFirst();
while(!m_pRecordset->adoEOF)
{
CStringinsertTime=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("F_TYPE_ID"))->Value);
AfxMessageBox(insertTime);
m_pRecordset->MoveNext();
}
}
catch(_com_error&e)
{
AfxMessageBox(e.Description());
return;
}
}
(2)mfc连接sqlserver扩展阅读
连接数据库三支路
1、导入数据库命名空间:
usingSystem.Data.SqlClient;
2、创建数据库连接对象,并指定数据库连接字符串:
//创建数据库连接对象:SqlConnectionconn=newSqlConnection(str);
//数据库连接字符串:Stringstr="DataSource=.;InitialCatalog=test;IntegratedSecurity=True";
3、打开与数据库的连接:
Open.conn();
4、创建操作命令对象Command,并指定操作数据源以及操作命令:
//创建操作命令对象:SqlCommandcmd=newSqlCommand();
//操作数据源:cmd.Connection=conn;
//操作命令:cmd.CommandText="selectcount(*)fromuser_tablewhereuserName='"+uName+"'anserPwd='"+uPwd+"'";
‘叁’ VC++ MFC ADO连接SQL2008
我之前做项目总结的MFCADO链接数据库
ADO操作SQL
Visual C++提供了多种多样的数据库访问技术——ODBC API、MFC ODBC、DAO、OLE DB、ADO等。
其中ADO技术是基于OLE DB的访问接口,它继承了OLE DB技术的优点,并且,ADO对OLE DB的接口作了封装,定义了ADO对象,使程序开发得到简化,ADO技术属于数据库访问的高层接口。
1.导入相关库文件(一般在StdAfx.h中导入)
#import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace \
rename("EOF","adoEOF")
在#ifdef _UNICODE前面
2.初始化COM库(一般在InitInstance()中初始化)
BOOL CadoconnectionApp::InitInstance()
{
CWinApp::InitInstance();
AfxOleInit();//初始化COM库
AfxEnableControlContainer();
}
3 接口简介
ADO库包含三个基本接口:
__ConnectionPtr接口 创建数据库连接
__CommandPtr接口 执行SQL命令
__RecordsetPtr接口 返回结果集
__ConnectionPtr接口返回一个记录集或一个空指针。通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程。用__ConnectionPtr接口返回一个记录集不是一个好的使用方法。
__CommandPtr接口返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。在使用__CommandPtr接口时,可以利用全局__ConnectionPtr接口,也可以在__CommandPtr接口里直接使用连接串。如果只执行一次或几次数据访问操作,后者是比较好的选择。但如果要频繁访问数据库,并要返回很多记录集,那么,应该使用全局__ConnectionPtr接口创建一个数据连接,然后使用__CommandPtr接口执行存储过程和SQL语句。
__RecordsetPtr是一个记录集对象。与以上两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等。同__CommandPtr接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给__RecordsetPtr的connection成员变量,让它自己创建数据连接。如果要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局—ConnectionPtr接口,然后使用__RecordsetPtr执行存储过程和SQL语句。
4.连接数据库
在对话框
public:
_RecordsetPtr m_pRecordset;
_ConnectionPtr m_pConnection;
_CommandPtr m_pCommand;
在类的构造函数中创建:
m_pConnection.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pCommand.CreateInstance(__uuidof(Command));
BOOL CADODlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: Add extra initialization here
try
{
m_pConnection->ConnectionTimeout=10;
m_pConnection ->Open("Provider=SQLOLEDB;Data Source= PC-20140312ZLBA;Initial Catalog=CNCDB","dbaccess","dbaccess",adModeUnknown);
///连接数据库
MessageBox( L"连接数据库成功");
}
catch(_com_error e)
{
AfxMessageBox(_T("连接数据库失败!"));
return TRUE;
}
return TRUE; // return TRUE unless you set the focus to a control
}
5.数据库操作
m_pConnection ->Execute("delete from TBL_CONNECTLOGS",NULL,adCmdText);
6.关闭连接
void XXXX::OnDestroy()
{
if(m_pConnection ->State)
{
m_pConnection ->Close();
}
m_pConnection =NULL;
}
补充:连接字符串的模式
一般模式
"Provider=SQLOLEDB;Data Source=服务器;Initial Catalog=数据库;uid=SQL用户名;pwd=SQL密码;"
信任模式
"Provider=SQLOLEDB;Data Source=服务器;Initial Catalog=数据库;Integrated Security=SSPI;"
网络模式
"Provider=SQLOLEDB;Data Source=IP地址,端口;Network Library=DBMSSOCN;Initial Catalog=数据库;UserID=用户名;Password=密码;"
注意看下面这两种写法,其实是一个意思:
m_pConnect->Open("Provider=SQLOLEDB;Data Source=服务器;Initial Catalog=数据库;","sa","123456",-1);
m_pConnect->Open("Provider=SQLOLEDB;Data Source=服务器;Initial Catalog=数据库;uid=sa;pwd=123456;","","",-1);
‘肆’ MFC利用ADO连接SQLSERVER2000的问题
你的数据库名 和 表名 分别是 “数据库名” “表名” 这么犀利 ???
这类问题 首先是要确定你的数据库环境成功建立起来没 可以在桌面建立一个 .TXT文件 然后把后缀名改为 .udl 双击打开就是了 测试数据库连接
如果没问题 就检查VC代码 一系列的问题 有相关的数据库操作类 建议去系统学习
先打好基础吧
‘伍’ 怎样用MFC连接SQL sever
_ConnectionPtr m_pCon; //ADO连接对象
_RecordsetPtr m_pRs;
_CommandPtr m_pCom;
CString strAdoConn;
strAdoConn.Format("driver={SQL Server};SERVER=%s;UID=%s;PWD=%s;DATABASE=%s", strServer, strUser, strPWD, strDatabase);
m_pCon.CreateInstance(_uuidof(Connection));
m_pCon->ConnectionString = (_bstr_t)strAdoConn;
m_pCon->Open("","","",NULL);
m_pCom.CreateInstance("ADODB.Command");
m_pRs.CreateInstance(_uuidof(Recordset));
CString sql;
sql.Format("select * from table'");
try
{
m_pRs1->raw_Close();
m_pRs1->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
}
catch(...)
{}
‘陆’ MFC无法用ADO连接远程SQL数据库
检查下服务器端的(也就是你的电脑) Microsoft SQL Server 2005-- 配置工具 -- SQLServer外围应用配置器 -- 服务和连接的外围应用配置器 -- Database Engine -- 远程连接 --设置成为:本地连接和远程连接(同时使用TCP/IP和named pipes)。
试试吧 。
‘柒’ 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连接到数据库,数据库位置发生改变后,怎样重新接入
不管是access还是sql
server,在mfc下都可以通过ado进行数据库连接。
access连接的时候只需要传入数据库文件的存放路径就行;
sql
server连接的时候,得传入服务器名、数据库名、用户名、用户密码等参数。
ado封装类在网上有下的,你可以搜一下!
有问题加q说!