首先你把數據源配置好,具體過程在網路上可以搜到,先建一個資料庫,添加好你要用到的表,然後在裡面選擇SQL server,這些就不說了,具體在MFC中連接的時候,首先你建一個MFC項目,把你要用的對話框弄好,再新建裡面找MFC ODBC使用者,會出現選擇數據源的對話框,在裡面找你要用到的資料庫,確定後會出現選擇資料庫對象的對話框,可能會出現登陸的對話框,選擇你要用的資料庫對象就可以了,說的不是很詳細,沒有實際的做,憑印象的,希望可以幫到你
⑵ mfc如何將編輯框內容插入sql資料庫,編輯框成員m_name,資料庫名link,表Table,列name,CDatabase db
1、先連接資料庫,並打開資料庫
2、將m_name編輯框內的內容如果是字元串的話,直接插入如果不是,要轉換成字元串:
3、然後些SQl語句:insert into Table (name)values(m_name);
4、執行SQL語句,並更新資料庫即可。
大概過程是這樣的,具體的語句你應該可以寫出來的
⑶ 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怎麼連接MYSQL資料庫求詳細(mfc連接資料庫sqlserver)
用ADO連接SQL資料庫
步驟如下:
1,在頭文件"StdAfx.h"中導入#import"C:/ProgramFiles/CommonFiles/System/ado/msado15.dll"no_namespacerename("EOF","rsEOF"),記住把這句話放到endif的後面,不然會報錯,這樣處理好之後,數升編譯後又一個警告,可以忽略
2,在對話框的()函數中寫上"::(NULL);::AfxOleInit();」在主程序的初始化函數中,它就可以寫一次
3,在對話框類的頭文件中,聲明如下變數禪戚:_m_pConnection;_pRst;
連接資料庫的代碼如下:
try
{
hr=m_pConnection.("ADODB.Connection");
if(SUCCEEDED(hr))
{
hr=m_pConnection- } } catch(_com_errore) { (e.()); } 」資料庫的驅動器名稱「在控制面板里,以大薯襲老圖標查看,可以看到一個"ODBC",雙擊打開,在」驅動程序「裡面在最下面有兩個」SQLServer"和「SQLNativeClient"如果你是2000的SQL版本,就選」SQLServer"及「Provider=SQLServer"2005的"Provider=SQLNativeClient"DataSource=?,?的值可以是」localhost"也可以是你的資料庫伺服器的名稱,連接資料庫的時候可以看到,復制一下就可以了。 處理完之後就可以連接到你想要連接的資料庫上了!! ⑸ mfc 怎麼連接server sql
一、測試環境 ⑹ 在MFC下操作資料庫的SQL語句
Cstring strsql = "..."; ⑺ MFC 向SQL資料庫寫入數據問題 在MFC中與SQL資料庫相關聯的主要是兩個類:CDatabase類與CRecordeset類。 1.將SQL中的欄位顯示在Clistctrl空間的列名中 2.刪除表中的某一行: 3.增加到記錄中一行: ⑻ MFC中怎麼用SQL更新資料庫
初始化引入相關的庫+Connection對象的創建和資料庫的連接 ⑼ mfc 應用ado 連接 sql 資料庫
教你個連接資料庫的方法。首先新建一個txt文件,把他命名為aaa.udl然後雙擊它配置資料庫的連接。配置好連接成功後,將該文件放置程序文件夾內。連接資料庫時將你的_bstr_t ⑽ MFC編程 執行SQL資料庫語句問題
把這句改一下,格式不對!變數應該有單引號括起來!
操作系統:WindowsXP
資料庫:SQLServer2005
IDE:VC++6.0
二、初始化ADO
在.h文件中添加:
_ConnectionPtrm_pConnection;
_RecordsetPtrm_pRst;
在.cpp中添加函數:
BOOLXXXApp::InitADO()
{
CoInitialize(NULL);
HRESULThrpC,hrpR;
hrpC=m_pConnection.CreateInstance(__uuidof(Connection));
hrpR=m_pRst.CreateInstance(__uuidof(Recordset));
if(SUCCEEDED(hrpC)&& SUCCEEDED(hrpR))
returnTRUE;
returnFALSE;
}
三、連接資料庫的函數
boolXXXApp::ConnectMDBDatabase()
{
CStringtemp;
_variant_tvar;
CStringsql;
sql.Format("driver={SQLServer};Server=TEST;DATABASE=TEST;UID=sa;PWD=123456");
try
{
if(((XXXApp*)AfxGetApp())->m_pConnection->State)
((XXXApp*)AfxGetApp())->m_pConnection->Close();
((XXXApp*)AfxGetApp())->m_pConnection->ConnectionTimeout=15;
((XXXApp *)AfxGetApp())->m_pConnection->Open((char*)(LPCTSTR)sql,"","",adModeUnknown);
}
catch(_com_errore)
{
returnFALSE;
}
returnTRUE;
}
四、建立連接(在InitInstance()中添加)
//初始化ADO
if(!((XXXApp*)AfxGetApp())->InitADO())
{
returnFALSE;
}
//連接生產資料庫
if(!this->ConnectMDBDatabase())
{
AfxMessageBox("連接生產資料庫失敗",MB_OK,0);
returnFALSE;
}
五、操作資料庫信息
BOOL XXX::GetOrderList()//查詢和插入
{
CStringtemp;
_variant_tvar;
CStringsql;
try
{
sql.Format("select* from Table where Name='瞎洞李test' andEnable = 1");
if(((XXXApp*)AfxGetApp())->m_pRst->State)
((XXXApp*)AfxGetApp())->顫凳m_pRst->Close();
((XXXApp*)AfxGetApp())->m_pRst=((XXXApp *)AfxGetApp())->m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);
while(!((XXXApp*)AfxGetApp())->m_pRst->adoEOF)
{
var= ((XXXApp *)AfxGetApp())->m_pRst->GetCollect("Class"磨遲);
temp=VariantToCString(var);
this->m_ctrClass.AddString(temp);
var= ((XXXApp *)AfxGetApp())->m_pRst->GetCollect("Age");
this->age=var.intval();
((XXXApp*)AfxGetApp())->m_pRst->MoveNext();
}
if(((XXXApp*)AfxGetApp())->m_pRst->State)
((XXXApp*)AfxGetApp())->m_pRst->Close();
}
catch(_com_errore)
{
returnFALSE;
}
sql.Format("INSERTINTO Student (Name,Adress) VALUES ('%s','%s')", \
this->name,this->adress);
try
{
if(((XXXApp*)AfxGetApp())->m_pRst->State)
((XXXApp *)AfxGetApp())->m_pRst->Close();
((XXXApp*)AfxGetApp())->m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);
if(((XXXApp*)AfxGetApp())->m_pRst->State)
((XXXApp*)AfxGetApp())->m_pRst->Close();
}
catch(_com_errore)
{
MessageBox("錄入Student表失敗","提示",MB_ICONHAND);
returnFALSE;
}
returnTRUE;
}
Update和Delete以此類推,這里就不做詳細介紹了。
此文章只是個人在實際項目中所總結的一點小小經驗,代碼不是非常的嚴謹,覺得有幫助的可以參考一下,覺得有問題的可以給我留言,便於我做出改善,大家相互學習。
m_command->CommandText = (_bsrt_t)strsql;
m_recordest = m_command->Execute(NULL,NULL,adCmdText);
[cpp]viewplain
m_gl.Open(CRecordset::dynaset);//打開ODBC連接的資料庫
shortnfilecount=m_gl.GetODBCFieldCount();//獲取表中的欄位數
CODBCFieldInfofieldinfo;//用於存儲欄位信息
for(intn=0;n<nfilecount;n++)
{
m_gl.GetODBCFieldInfo(n,fieldinfo);//返回某一欄位索引的欄位信息m_strName保存的是欄位名
intnWidth=m_list.GetStringWidth(fieldinfo.m_strName)+15;//確定列頭的顯示長度
m_list.InsertColumn(n,fieldinfo.m_strName,LVCFMT_LEFT,nWidth);//在Clistctrl控制項中插入列
}
CStringstrvalue;
m_gl.MoveFirst();
intncount=0;
while(!m_gl.IsEOF())
{
m_list.InsertItem(ncount,strvalue);
//for(shortj=0;j<nfilecount;j++)
//{
//m_gl.GetFieldValue(j,strvalue);//獲取某個欄位的信息
//m_list.SetItemText(ncount,j,strvalue);//在Clistctrl控制項中寫入數據
//}
CStringm_ID;
m_ID.Format("%d",m_gl.m_ID);
m_list.SetItemText(ncount,0,m_ID);
m_list.SetItemText(ncount,1,m_gl.column1);
m_list.SetItemText(ncount,2,m_gl.column2);
m_list.SetItemText(ncount,3,m_gl.column3);
m_list.SetItemText(ncount,4,m_gl.column4);
m_list.SetItemText(ncount,5,m_gl.column4);
m_gl.MoveNext();
ncount++;
}
m_gl.Close();
m_db.Close();[cpp]viewplain
intnIdxingdb=nIdx1+1;
m_gl.Open(CRecordset::dynaset);//打開資料庫
m_gl.SetAbsolutePosition(nIdxingdb);//設置資料庫的記錄位置
m_gl.Delete();//刪除記錄
m_gl.Close();[cpp]viewplain
m_gl.AddNew();
m_gl.SetFieldNull(NULL,false);
m_gl.column1=r.Name;
m_gl.column5=r.Photo;
m_gl.column2=r.Depart;
m_gl.column3=r.IsIntern;
m_gl.column4=r.Phone;
m_gl.Update();
m_gl.Requery();
m_gl.MoveFirst();
#import "c:\\Program Files\\Common Files\\System\\ADO\\msado15.dll" rename_namespace("ADOCG") rename("EOF","adoEOF") //rename("BOF","adoBOF")
using namespace ADOCG;
//... ...
_ConnectionPtr m_pConnection;
//... ...
if(!AfxOleInit())
{
AfxMessageBox("初始化OLE DLL失敗!");
Return FALSE;
}
m_pConnection.CreateInstance("ADODB.Connection");
try
{
m_pConnection->ConnectionTimeout = 3;
//連接ACCESS2000
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:/Attendence/AttendenceDB.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.Description() + _T("\n資料庫連接失敗"));
}
更新記錄:
strSql.Format(_T("UPDATE WorkUser SET MemberName = '%s', MemberPosition = '%s' WHERE MemberID = '%s' "),m_StringName, m_StringPosition, m_StringNumber);
try
{
(theApp.m_pConnection)->Execute(_bstr_t(strSql), 0, adCmdText);
}
catch(_com_error e)
{
MessageBox(e.Description());
return;
}
strConnect
=
"Provider
=
SQLOLEDB.1;Password=111;Persist
Security
Info=True
;User
Id=root;
Initial
Catalog=test;
Data
Source=localhost;";
這一句改為:
_bstr_t
strConnect
="File
Name=EPXLDT.udl";然後再連接試試。
如果還不行,把你的郵箱發給我,我給你發個連接資料庫的類。挺好用的
"insert into 生產計劃表 values
('"+qj2+"', '"+qj3+"', '"+qj4+"', '"+qj5+"', '"+qj6+"', '"+qj7+"',
'"+qj8+"', '"+qj9+"', '"+qj10+"', '"+qj11+"', '"+qj12+"')";
對於這種sql語句,可以用輸出函數輸出一下,來檢查sql語句是否錯誤!