當前位置:首頁 » 數據倉庫 » mfcsql資料庫操作
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mfcsql資料庫操作

發布時間: 2022-08-09 03:48:01

Ⅰ 在MFC下操作資料庫sql語句

Cstring strsql = "...";
m_command->CommandText = (_bsrt_t)strsql;

m_recordest = m_command->Execute(NULL,NULL,adCmdText);

Ⅱ MFC中怎麼用SQL更新資料庫

初始化引入相關的庫+Connection對象的創建和資料庫的連接
#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;
}

Ⅲ MFC對話框如何連接SQL資料庫

好像沒問題,應該是你沒有設置好。。。其他地方出錯了
有些秘密是男人永遠不會說的,所以就不要再問了,因為再問,他們給的答案也不會是真的!

1、男人很容易喜歡一個女人,卻不輕易深愛一個女人。

2、男人在感情的王國里,絕對是個昏君。女人只要肯奉承,他什麼都答應。

3、男人普遍喜歡外表溫柔的女子,寧願把精力花在事業或其他地方,也不願全用來征服女人。

4、男人都不太重視對自己太好的女人。

5、男人都怕女人死纏爛打,但喜歡用同樣的方式對付沒追上的女人。

6、男人的夢想之一,是擁有可以超越友誼界限的紅顏知己。

7、男人會以很理性的態度取捨愛情,就算他感性上很愛一個人,但當他清楚她並非一個好妻子時,他會放棄她,另找合適家居生活的那一個。男人認為戀愛和結婚是兩回事,很多時候,他拖延結婚,根本原因就是他認為身邊的女人不是想像中的好妻子。

8、男人對妻子的要求,可能比對戀人更低——在外型上,在性格上則更高。

9、懂得欣賞聰明女人的男人不多,和她們在一起,男人總覺得缺乏安全感受。

10、當有喜歡的女人在場時,男人會有如下表現:話多;顯得聰明些;比平日慷慨;會把話題扯到得意成就上;會刻意顯露平時少見的好心腸;多說一些自以為好笑的笑話引大家發笑。

11、一個男人同時是大男人和小男人的化身。大男人的他,希望女人完全遷就他,令他放心;小男人的他,意識到自己懦弱無能的一面,猶豫不決。說穿了,他們很多都是忌妒心重的小器鬼,又像孩子般容易被哄騙。

12、男人追求女人的時候願意割捨一切自由,追到了越來越感到自由的重要性。

13、男人內心隱藏著狩獵心態,追捕,得到後就要馴服她,讓她變成可在家飼養的乖乖動物。

14、男人都有愛當英雄的自大心態,所以很容易愛上向他訴苦的女人。

15、男人希望身邊的女人明白:帶著同一個女人去所有地方,實在是一件很悶的事(或許女人也這樣覺得吧,只是不好意思說),所以和其他女人適度約會,是調劑和放鬆,完全可以沒有其他企圖。

16、兩性關系中,女人需要男人告訴她,他願意為她做任何犧牲,男人則需要女人告訴他,他很能幹。

17、男人自以為是的多情,常常是女人眼中不折不扣的薄倖。

18、在男人心底,親熱到哪個程度,就是和女人的戀情發展到什麼程度。

19、男人每隔一段時間,就有情緒和體力跌到谷底的幾天,不想見任何人,躲起來翻翻書,聽聽音樂,看看影碟或狂打電玩發泄。

20、有過戀愛經驗的男人都知道:女人是不能不騙的,類似像:「我會永遠愛你」,「我一直都會像現在這樣疼你」,「什麼時候需要我,一個電話我就立刻趕來」,「我以後再也不會像愛你這樣去愛另外一個人」這種話是必須要說但永遠堅持不了的「騙話」,誰讓女人這么愛聽呢!

21、男人遇上舊情人多半會自作多情,以為與自己有過感情的人,內心總會保存一份情,幻想愛過他的女人永遠愛他。女人只會美化眼前的男人,男人卻不自覺地美化逝去的戀情。所以男人比女人更認同:分手還是朋友。不管是甩人還是被甩,男人多半願意與前女友繼續保持聯絡。

22、女人在意男友以前的女友,男人卻在意女人離開他後找個什麼樣的男友。如果分手後仍是朋友的,他會時不時批評她的男友。

23、男人跌入愛河,很少問她的過去,不太關心她和哪種男人談過戀愛,因為男人較注重女人的外表——外表就是現在。

24、男人不願聽心上人的舊戀情,因為一想到自己愛的人之前和其他男人有過肌膚之親,就難以忍受。

25、面對兩個對自己有愛意的人,女人會在徘徊中選擇,男人不會為此煩惱——他其實只想同時追上兩個人呢!

26、男人愛上一個女人,不一定對她有強烈的親熱沖動,反倒對一些他只是喜歡而不愛的女人,沖動更大些。

27、男人很容易被女人吸引,但他分得出哪種渴求出於性還是愛,大概知道能從她身上得到什麼。

28、女人主動示愛,對男人來說,唯一的損失就是縮短了那段朦朦朧朧,若有若無的浪漫日子。

29、男人相信證明自身出色的重要表現之一是:擁有更多的女人。事業上越出色的男人,往往需要更多女人的仰慕和傾心以體現他的超凡脫俗。

30、男人在分手問題上拖泥帶水,其實是想把去留的難題丟給女人,減少自己決定帶來的內疚感。

31、男人說的「未來」是6個月到1年時間,女人的定義則可以是10年到50年。當男人愛上一個女人,他只會想像如何在短暫的未來與她親密發展;女人則幻想到戀愛,結婚,生孩子乃至如何白頭到老。

32、男人基本是都小器,大方是裝出來的。表面上他們不拘小節,其實內心和女人一樣,計算得清清楚楚。

33、女性較容易坦白心事,男人恰恰相反。遇到煩惱,他們找個別好友傾訴時,不會說得很完整,總會給自己留最後一點面子。男人的傾訴都是經過包裝或刻意切碎的,不讓一個人知道全部。這也是女人很難了解男人的原因——他們根本不想被人徹底了解。

34、一個男人可以愛上兩個女人,但究竟喜歡哪個多一點,他多半分不清楚。

35、男人看待婚外情比女人實際,因為他有更多機會涉及婚外情,而且他心裡明白——花心隱藏在男人的天性中。

36、男人要變心,其實和女人是否注意保持美麗儀表沒直接關系,那隻是他的借口之一。當他厭倦一個女人,不管她多漂亮,只要是她以外的任何女人,他都覺得比她有吸引力。

37、成熟男人對於崇拜他的少女,抵抗力是相當弱的。

38、男人年紀越大,擇偶越隨心所欲,乃至不顧他人的任何想法。

39、對許多男人來說,真愛意味著——愛情減去性。換句話,男人只要覺得女人缺乏性的吸引力,就可以一直跟她做單純的朋友。

40、男人在有尋求親熱的身體沖動那一刻,對異性的要求忽然降低,他會覺得一個平時普通的女人很可愛,甚至很性感。不過等沖動一旦消退,他立刻恢復了習慣的審美判斷。

41、男人對女人的愛天天快遞查詢 http://www.paijian.com/tt.html總是混合了生理沖動,親熱前他覺得女人什麼都好,之後卻可以無半點留戀,但為了不背負太多罪惡感,他們可以裝作溫柔地在事後繼續吐露纏綿的情話。

42、男人很容易愛上賣弄風情,看起來唾手可得的女人,因為他覺得有更多機會觸摸。

Ⅳ 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資料庫語句問題

把這句改一下,格式不對!變數應該有單引號括起來!
"insert into 生產計劃表 values
('"+qj2+"', '"+qj3+"', '"+qj4+"', '"+qj5+"', '"+qj6+"', '"+qj7+"',
'"+qj8+"', '"+qj9+"', '"+qj10+"', '"+qj11+"', '"+qj12+"')";

對於這種sql語句,可以用輸出函數輸出一下,來檢查sql語句是否錯誤!

Ⅵ mfc如何連接sql資料庫

推薦使用ADO連接資料庫,只要資料庫配置正確,基本就是sql語句的增刪改查了。
推薦你去看一下孫鑫的VC++視頻教程,其中有一講是講MFC資料庫連接的sql server的,講的很詳細的。祝好運。

Ⅶ MFC中,如何連接sqlite3的資料庫,並對此資料庫操作

這個比較容易。按照網上提供的方法把sqlite編譯成dll和lib
將dll和lib在項目的輸入中添加好
在要操作的文件中#include 「sqlite3.h」就可以了。我做過這方面的項目,雖然是嵌入式wince使用,但是基本和windows相同。
下面是詳細的用法:
一. 編譯動態鏈接庫庫文件
1). 打開VC新建一個「Win32 Dynamic-Link Library」工程,命名為:sqlite3(也可以是其他的,注意這個就是編譯後的dll和lib的名字)
2). 在接下來的對話框中選擇"An empty DLL project",點 FINISH->OK
3). 將源碼中所有的 *.c *.h *.def 復制到工程文件夾下
4). 在工程的Source File中添加你下載到的SQLite源文件中所有*.c文件,
注意這里不要添加shell.c和tclsqlite.c這兩個文件。*注意需要將tclsqlite.c和shell.c、icu.c去掉。其中tclsqlite.c用於生成基於tcl的api,如果要編譯,這需要另外下載tcl.h;shell.c用於生成命令行模式的sqlite.exe,如果是靜態庫形式則可以選擇; icu是internationalcomponents forunicode,如果需要則需另外下載相關頭文件。

5). 將 SQLite 源文件中的 sqlite3.def 文件添加到在工程的Source File中
6). 在Header File中添加你下載到的SQLite源文件中所有*.h文件,
7). 開始編譯,Build(F7)一下
也許到這里會遇到一個錯誤:

e:\zieckey\sqlite\sqlite3\sqlite3ext.h(22) : fatal error C1083: Cannot open include file: 'sqlite3.h': No such file or directory

經檢查發現,源碼中包含sqlite3.h都是以 #include <sqlite3.h> 方式包含的,
這就是說編譯器在系統默認路徑中搜索,這樣當然搜索不到 sqlite3.h 這個頭文件啦,
這時可以改為 #include "sqlite3.h" ,讓編譯器在工程路徑中搜索,
但是如果還有其他地方也是以 #include <sqlite3.h> 方式包含的,那麼改源碼就顯得有點麻煩,
好了,我們可以這樣,在菜單欄依次選擇:Tools->Options...->Directeries
在下面的Directeries選項中輸入你的 sqlite3.h 的路徑,這里也就是你的工程目錄.
添加好後,我們在編譯一下就好了,
最後我們在工程目錄的 Debug 目錄生成了下面兩個重要文件:
動態鏈接庫文件 sqlite3.dll 和引入庫文件 sqlite3.lib

二. 使用動態鏈接庫

下面我們來編寫個程序來測試下我們的動態鏈接庫.

在VC下新建一個空的"Win32 Console Application" Win32控制台程序,工程命名為:TestSqliteOnWindows
再新建一個 test.cpp 的C++語言源程序,源代碼如下:

// name: test.cpp
// This prog is used to test C/C++ API for sqlite3 .It is very simple,ha !
// Author : zieckey
// data : 2006/11/28

#include <stdio.h>
#include <stdlib.h>
#include "sqlite3.h"
#define _DEBUG_

int main( void )
{
sqlite3 *db=NULL;
char *zErrMsg = 0;

int rc;

rc = sqlite3_open("zieckey.db", &db); //打開指定的資料庫文件,如果不存在將創建一個同名的資料庫文件
if( rc )
{
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return (1);
}
else printf("You have opened a sqlite3 database named zieckey.db successfully!\nCongratulations! Have fun ! ^-^ \n");

//創建一個表,如果該表存在,則不創建,並給出提示信息,存儲在 zErrMsg 中
char *sql = " CREATE TABLE SensorData(ID INTEGER PRIMARY KEY,SensorID INTEGER,SiteNum INTEGER,Time VARCHAR(12),SensorParameter REAL);" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

#ifdef _DEBUG_
printf("zErrMsg = %s \n", zErrMsg);
#endif

//插入數據
sql = "INSERT INTO \"SensorData\" VALUES(NULL , 1 , 1 , '200605011206', 18.9 );" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

sql = "INSERT INTO \"SensorData\" VALUES(NULL , 23 , 45 , '200605011306', 16.4 );" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

sql = "INSERT INTO \"SensorData\" VALUES(NULL , 34 , 45 , '200605011306', 15.4 );" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

int nrow = 0, ncolumn = 0;
char **azResult; //二維數組存放結果

//查詢數據
sql = "SELECT * FROM SensorData ";
sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );
int i = 0 ;
printf( "row:%d column=%d \n" , nrow , ncolumn );
printf( "\nThe result of querying is : \n" );
for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )
printf( "azResult[%d] = %s\n", i , azResult[i] );

//刪除數據
sql = "DELETE FROM SensorData WHERE SensorID = 1 ;" ;
sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
#ifdef _DEBUG_
printf("zErrMsg = %s \n", zErrMsg);
#endif
sql = "SELECT * FROM SensorData ";
sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );
printf( "\n\n\n\nrow:%d column=%d " , nrow , ncolumn );
printf( "\nAfter deleting , the result of querying is : \n" );
for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )
printf( "azResult[%d] = %s\n", i , azResult[i] );

//釋放掉 azResult 的內存空間
sqlite3_free_table( azResult );

#ifdef _DEBUG_
printf("zErrMsg = %s \n", zErrMsg);
#endif

sqlite3_close(db); //關閉資料庫
return 0;
}

另外,將sqlite3.h sqlite3.lib sqlite3.dll文件復制到我們的工程目錄.
最後 Project->Settings 在Link選項卡找到Object/library moles : 在最後填入sqlite3.lib 。
如果原來就有鏈接,請使用空格分隔。
現在可以編譯了.
運行結果如下:
You have opened a sqlite3 database named zieckey.db successfully!
Congratulations! Have fun ! ^-^
zErrMsg = (null)
row:3 column=5

The result of querying is :
azResult[0] = ID
azResult[1] = SensorID
azResult[2] = SiteNum
azResult[3] = Time
azResult[4] = SensorParameter
azResult[5] = 1
azResult[6] = 1
azResult[7] = 1
azResult[8] = 200605011206
azResult[9] = 18.9
azResult[10] = 2
azResult[11] = 23
azResult[12] = 45
azResult[13] = 200605011306
azResult[14] = 16.4
azResult[15] = 3
azResult[16] = 34
azResult[17] = 45
azResult[18] = 200605011306
azResult[19] = 15.4
zErrMsg = (null)

row:2 column=5
After deleting , the result of querying is :
azResult[0] = ID
azResult[1] = SensorID
azResult[2] = SiteNum
azResult[3] = Time
azResult[4] = SensorParameter
azResult[5] = 2
azResult[6] = 23
azResult[7] = 45
azResult[8] = 200605011306
azResult[9] = 16.4
azResult[10] = 3
azResult[11] = 34
azResult[12] = 45
azResult[13] = 200605011306
azResult[14] = 15.4
zErrMsg = (null)
Press any key to continue
在上面的第五步
5). 將 SQLite 源文件中的 sqlite3.def 文件添加到在工程的Source File中
是必須的, sqlite3.def 這個文件的加入會生成 *.lib引入庫文件,這個對於*.dll文件是很重要的.否則你光有*.dll文件在程序調用的時候就不是那麼方便了,因為這樣你只能通過動態載入dll的方式調用dll庫中函數

這個程序,我們先創建一個資料庫,然後新建一個表,然後插入一些數據,
再查詢看看插入的數據是否正確,然後又刪除一些數據,刪除後我們再查詢了一下,
發現我們的刪除操作也是成功的.
這個程序簡單的調用 sqlite 的函數介面來實現對資料庫的管理,
包括創建資料庫、創建表格、插入數據、查詢數據、刪除數據等。

Ⅷ MFC 向SQL資料庫寫入數據問題

在MFC中與SQL資料庫相關聯的主要是兩個類:CDatabase類與CRecordeset類。

1.將SQL中的欄位顯示在Clistctrl空間的列名中

[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();

2.刪除表中的某一行:

[cpp]viewplain
intnIdxingdb=nIdx1+1;
m_gl.Open(CRecordset::dynaset);//打開資料庫
m_gl.SetAbsolutePosition(nIdxingdb);//設置資料庫的記錄位置
m_gl.Delete();//刪除記錄
m_gl.Close();

3.增加到記錄中一行:

[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();

Ⅸ mfc 應用ado 連接 sql 資料庫

教你個連接資料庫的方法。首先新建一個txt文件,把他命名為aaa.udl然後雙擊它配置資料庫的連接。配置好連接成功後,將該文件放置程序文件夾內。連接資料庫時將你的_bstr_t
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";然後再連接試試。 如果還不行,把你的郵箱發給我,我給你發個連接資料庫的類。挺好用的