當前位置:首頁 » 操作系統 » mfc連接資料庫的

mfc連接資料庫的

發布時間: 2025-03-06 12:12:33

⑴ mfc如何遠程連接sql資料庫

1. 配置SQL Server外圍應用伺服器,開啟SQL Server 2005遠程連接功能:

「配置工具」->「SQL Server外圍應用配置器」-> 選擇「服務和連接的外圍應用配置器」->選擇Database Engine節點下的 「遠程連接」-> 選擇「本地連接和遠程連接」-> 選擇「同時使用TCP/IP和named pipes」-> 點擊確定,重新啟動
資料庫
服務。

2. 把登陸設置改為SQL Server 和 Windows 身份驗證模式:

打開SQL Server Management Studio管理器,點擊伺服器上面右鍵然後查看屬性,在安全性選項裡面對服務身份驗證選擇「SQL Server 和 Windows 身份驗證模式」。

3.修改SQL Server sa的密碼:

在SQL Server Management Studio管理器中,展開伺服器上的「安全性」->登陸名->在sa帳號上點右鍵屬性,這樣在「常規」的選擇頁中更改sa登陸帳號的密碼。注意SQL Server2005中,不允許密碼設置簡單,否則會通不過。然後在選擇頁的「狀態」的登錄修改為啟用。

4.設置SQL Server 的埠號

在SQL Server Configuration Manager管理器中,展開SQL Server 2005 Network Configuration項目 -> 單擊下面的 Protocols for 'dbname' -> 在右側的窗口中,右鍵單擊"TCP/IP"項,選擇"屬性" -> 打開"TCP/IP properties"窗口 - > 單擊"IP Address"選項卡 -> 將所有IP地址下面的 "TCP Port" 值設置成1433

5.確保開啟SQL Server服務

在SQL Server Configuration Manager管理器中, 選中SQL Server 2005 Services,在右側的窗口中啟動SQL Server ('YourInstance'),

6. 修改連接字元串,在字元串中加入SQl Server 服務的埠號.

strConnection.Format("driver={SQL Server};Server=xx.xx.xx.xx,1433;DATABASE=mydatabase;UID=name;PWD=pwd");

7.連接coder:

stdafx.h中引用:

#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")

8. 連接SQL SERVER伺服器,並連接資料庫

if(!AfxOleInit()) //這就是初始化COM庫

{

AfxMessageBox("資料庫初始化出錯!");

}

_ConnectionPtr pCn("ADODB.Connection");

pCn->Open((_bstr_t)"Driver=

{SQL Server};Server=127.0.0.1,1433;Database=carcom;UID=sa;PWD=abc123456","","",adModeUnknown);

⑵ 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中如何連接access資料庫 求詳細步驟

比如在你的工程目錄中建一個 dbfvir.mdb //Access資料庫,然後你需要做以下操作:

1.在StadAfx.h裡面添加#include <afxdb.h> //新加入頭文件,用於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(); //將記錄移到下一行

}

}

本程序是自動注冊數據源的,當然可以手動注冊數據源,關於如何注冊數據源並不麻煩,敘述起來不太方面,你就參考其他的吧。不過建議不用手動注冊數據源,這樣你地程序移植性不好.

熱點內容
柴油朋克之戰安卓哪裡下載 發布:2025-03-06 17:50:16 瀏覽:212
安卓x微信鈴聲怎麼改 發布:2025-03-06 17:50:15 瀏覽:890
java調度任務 發布:2025-03-06 17:49:31 瀏覽:713
js值傳給php 發布:2025-03-06 17:39:22 瀏覽:900
蘋果拉結爾輔助腳本免費 發布:2025-03-06 17:39:19 瀏覽:563
雲伺服器可以通過遠程打游戲嗎 發布:2025-03-06 17:16:43 瀏覽:917
cs新版本要什麼配置 發布:2025-03-06 17:15:22 瀏覽:227
用戶登錄密碼設置規則是什麼 發布:2025-03-06 17:04:40 瀏覽:753
海外移動賬號訪問 發布:2025-03-06 17:00:09 瀏覽:817
samba在伺服器搭建 發布:2025-03-06 16:53:35 瀏覽:172