① MFC ODBC 資料庫編程
m_rsDataSet.m_strFilter="Desk_code='"+m_strCode;
m_rsDataSet.m_strFilter+="'";
外面一個雙引號表示字元串,裡面一個單引號是字元串中的一個符號。
這么說吧,如果m_strCode是abc的話
那麼通過這兩句後,
m_rsDataSet.m_strFilter的值就是Desk_code='abc'
這兩個單引號是給資料庫用的。在sql語句中表示一個字元串
② MFC ODBC資料庫編程
給你個實例 只是一部分 應該有你要的全部東西了 至於變數與控制項關聯,用一下VC6.0的winzard就 會明白了 快捷鍵 ctrl+w
//////////////cpp部分
BOOL Subjectdlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CString sqlStr;
sqlStr="SELECT * FROM tb_subject";
mysubjectset = new Subjectinfo(&((CStudentsysApp*)AfxGetApp())->m_DB);
if(!mysubjectset->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr)) //打開數據表
{
AfxMessageBox("tb_subject表打開失敗!");
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
bool Subjectdlg::DisplayRecord()
{
if(mysubjectset->IsEOF()&&mysubjectset->IsBOF()) //判斷是否移動到了開頭和結尾
{
m_subjectname = "";
m_subjectid = "";
}
else
{
if(mysubjectset->IsBOF()) //移動到了開頭,就向後移動
{
mysubjectset->MoveNext();
}
else //否則前移
{
if(mysubjectset->IsEOF())
{
mysubjectset->MovePrev();
}
}
}
m_subjectname = mysubjectset->m_subject; //對應變數賦值
m_subjectid = mysubjectset->m_code;
UpdateData(FALSE);
return TRUE;
}
////////////那幾個指針
Subjectinfo* mysubjectset;
Subjectinfo* mysubjectset_find;
Subjectinfo* myclass_subject_findref;
///////////
subjectinfo是連接數據源的那個類
③ mfc 中對資料庫(ODBC)的操作
添加個資料庫類,然後進行相關操作即可。這有什麼難。
問題描述不清晰:用的什麼資料庫?
④ MFC中怎樣ODBC將資料庫連接到對話框程序
把這句話改了
if(!db1.open(_t("用戶"),false,false,_t("凳瞎odbc;"燃彎),false))
倒數第二皮粗悶個參數,不僅傳那個,還要傳一個odbc連接字元串。
比如"odbc;dsn=數據源名稱;uid=用戶名;pwd=密碼"
其次,建議你不要使用漢字作為數據源名稱,因為漢字的編碼問題,兼容性不好,很容易出現錯誤!
⑤ 請教高人 c++ MFC ODBC與資料庫連接的問題
資料庫編程的思路都是一致的:打開資料庫連接-》執行SQL語句-》獲得查詢結果-》關閉資料庫連接,不同的資料庫訪問技帆並術有不同的要求,比如用CAPI詰問MySql資料庫的時候還得釋放查詢結果集。
ODBC訪問資料庫得配置數據源
配置ODBC數據源:打開控制面板下的「數據源」,彈出「ODBC數據源管理器」,選擇DSN選項卡-》添加->你選擇你的SQLServer選項,單擊完成。如圖然後你再按照向導提示添加。
代碼中用ODBC訪問資料庫你得加上afxdb.h頭文件,
用CDataBase類連接資料庫、CRecordSet類查詢記錄。
現在在VC訪問資料庫常用的是ADO訪問,你可以找一下我前面的回答有ADO訪問資料庫的步驟。
CDataBasem_cODBCDb;
用CDataBase類的OpenEx()函數打開悶轎殲資料庫連接。連接字元串你自己構造一下。
定義一個與上面資料庫相關的查詢對象
CRecordSetm_cODBCRec(&m_cODBCDb);
用這個查詢對象的open方法就可以執行SQL語句與資料庫交互了;
現在用VC、MFC訪問資料庫常用的技術是ADO,學學這個吧。難點、但很實用!
導入ADO庫
#import"c:.dll"no_namespacerename("EOF","adoEOF")
2、用導入的動態庫的指針操作資料庫.
打開資料庫連接
_ConnectionPtrm_pConn;//資料庫連接指針
//創建Conneciton對象
m_pConn.CreateInstance(_T("ADODB.Connection"));
用ConnectionPtr的open方法m_pConn->Open(_bstr_t(m_sConn),
_T(""),_T(""),lOptions));
m_sConn為你連接資料庫的信息,你應該按照你的要求打開資料庫
然後你用打開的那個連接進行操作資料庫。比如
_RecordsetPtrpRec=m_pConn->Execute(_bstr_t(pszSql),NULL,CmdText);
pszSql就你要操作資料庫螞沖的SQL語句。在這個SQL語句里你可以創建表、更新表等。
用ADO訪問的時候要求初始他COM庫和釋放COM對象
//初始化COM環境(庫)
::CoInitialize(NULL);
//釋放COM對象
::CoUninitialize();
⑥ 用MFC怎麼用odbc 連接SQL資料庫,求詳解啊
首先你把數據源配置好,具體過程在網路上可以搜到,先建一個資料庫,添加好你要用到的表,然後在裡面選擇SQL server,這些就不說了,具體在MFC中連接的時候,首先你建一個MFC項目,啟運辯把你要用的對話框弄好,再新建裡面找MFC ODBC使用者,會出現選悄缺擇數據源的對話框,在裡面找你要用到的資料庫,確定後會出現選擇數悄頃據庫對象的對話框,可能會出現登陸的對話框,選擇你要用的資料庫對象就可以了,說的不是很詳細,沒有實際的做,憑印象的,希望可以幫到你
⑦ MFC中怎樣ODBC將資料庫連接到對話框程序
「未發現數據源名稱並且未指定默認的驅動程序」
這個問題我也遇到過,但是在運行過一次證明能連上資料庫之後出現的。這說明你的ODBC連接時靜態的,就是每次程序在另一台電腦上運行時就需要重新連一下ODBC資料庫。
如果你的程序沒有運行過一次就褲蘆搭報錯,問題可能出現在兩點:
1、創建ODBC數據源
你可以按照如下方法重新創建一次。單擊開始—>設置->控制面板->管理工具,在其中打開「數據源」(ODBC)在找到ODBC之後會彈出一個「胡拿ODBC數據源管理器」對話框,添加數據源-〉選擇數據源的驅動程序。這個軟體的資料庫使用的是Access,所以選擇Micrsoft Access Driver(*.mdb )單擊「完成」按鈕,在彈出的新對話框中填入你的數據源名,單擊「選擇」按鈕,在彈出的的「選擇資料庫」對話框中選擇你所建的資料庫(找到資料庫所保存的位置)嘩褲,單擊「確定」按鈕返回,然後單擊「確定」,創建ODBC數據源完成。(注意,這里創建的數據源是Access的)。
2、是SQL語言
首先在StdAfx.h 中添加如下代碼:
#include <odbcinst.h>//ODBC資料庫API頭文件
#include <afxdb.h>
然後在CXXAPP::InitInstance()中加添
SQLConfigDataSource(NULL,ODBC_ADD_DSN,
"Microsoft Access Driver (*.mdb)",
"DSN=數據源名稱\0"
"Description=Hotel\0"
"FileType=Access\0"
"DBQ=.\\數據源名稱.mdb\0"
);
按照這種方法你再試試,注意創建數據源時的數據源名稱要與SQL語句中的數據源名稱要一致。我知道的就這么多,希望能幫上你。
⑧ C++ODBC MFC編程數據源的顯示中,綁定了數據表,卻只能顯示第一列的數據。怎麼才能讓它全部顯示出來。
應該是基於CRecordView才行,這樣睜滲系統會自動生成一個相應的***Set類,裡面有你數據源中的所有欄位和變數,同時View類里會有個自動生成的m_pSet指針,是Set類里的,這個指針直接可以操作資料庫。比如我要把資料庫的數據全部顯示到一個報表,就是這樣:
m_pSet->MoveFirst();
m_list.DeleteAllItems();//m_list是報表關聯的Control型變數
do
{
CString s,s1,s2;
s.Format("%d",i+1);
s1.Format("%ld",m_pSet->m_stuId);
s2.Format("%ld",m_pSet->m_stuFamilyNum);//腔廳這4條是變數類型的轉換
m_list.InsertItem(i,s);//i是一個全局變數,初始值為0,用來伍早隱計數的
m_list.SetItemText(i,1,s1);
m_list.SetItemText(i,2,m_pSet->m_stuName);
m_list.SetItemText(i,3,m_pSet->m_stuSex);
m_list.SetItemText(i,4,m_pSet->m_stuProfession);
m_list.SetItemText(i,5,m_pSet->m_stuClass);
m_list.SetItemText(i,6,m_pSet->m_stuHobby);
m_list.SetItemText(i,7,m_pSet->m_stuAddress);
m_list.SetItemText(i,8,s2);//向報表插入資料庫的數據,也就是讀取資料庫
i++;// i 遞增
m_pSet->MoveNext();//指針後移
} while(!m_pSet->IsEOF());
m_pSet->Close();
⑨ C++ MFC編程,ODBC連接SQL後,怎麼讓SQL資料庫備份與恢復
void CMainFrame::OnBackup()
{
// TODO: Add your command handler code here
CDatabase db;
CString filename;
//構造保存文件對話框
CFileDialog filedlg(false,"",NULL,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"*.*");
if (filedlg.DoModal()==IDOK) //彈出對話框
{
filename=filedlg.GetPathName(); //獲取保銀察存文件的路徑
if (filename!="")
{
CString strSQL;
strSQL.Format("ODBC;UID="";PWD=""; "); //默認用戶名和密碼
db.Open("mystudent",false,false,strSQL);
strSQL.Format("backup database student to Disk='%s'",filename); //備份資料庫
db.ExecuteSQL(strSQL);
AfxMessageBox("資料庫備鄭沖份成功!\r\n 文件路徑為:"+filename);
}
}
else return;
}
void CMainFrame::OnRecover()
{
// TODO: Add your command handler code here
CDatabase db;
CString filename;
//構造打開文件對話框
CFileDialog filedlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"所有文件(*.*)||",NULL);
if (filedlg.DoModal()==IDOK)
{
filename=filedlg.GetPathName(); //獲取打開文件的路徑
if (filename!="")
{
CString strSQL;
strSQL.Format("ODBC;UID="";PWD=""; ");
db.Open("mystudent",false,false,strSQL);
strSQL.Format("restore database report from disk='%s'",filename); //還喊搏殲原資料庫
db.ExecuteSQL(strSQL);
AfxMessageBox("資料庫還原成功");
}
}
else return;
⑩ 用 visual c++ MFC 編程 用到一個ODBC的資料庫 如果將程序以及資料庫全部拿到另一台電腦上還能用嗎
可以的,ODBC的數據源可以是mdb文件則脊老,那麼只需要把文件路徑設置正確就可以,如果是SqlServer,那野孝么目孫升標機器上必須安裝SqlServer才行