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 ; //應用命名空間