當前位置:首頁 » 操作系統 » vc操作資料庫

vc操作資料庫

發布時間: 2023-04-13 18:47:21

❶ 在VC++中如何從資料庫中讀取數據和向資料庫中寫入數據

#include "stdafx.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

ADOConn::ADOConn()
{

}

ADOConn::~ADOConn()
{

}

// 初始化—連接資料庫
void ADOConn::OnInitADOConn()
{
// 初始化OLE/COM庫環境
::CoInitialize(NULL);

try
{
// 創建Connection對象
m_pConnection.CreateInstance("ADODB.Connection");
// 設置連接字元串,必須是BSTR型或者_bstr_t類型
_bstr_t strConnect = "Provider=MSDAsql.1;Persist Security Info=False;User ID=***;Data Source=***;";
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
// 捕捉異常
catch(_com_error e)
{
// 顯示錯誤信息
AfxMessageBox(e.Description());
}
}

// 執行查詢
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
// 連接資料庫,如果Connection對象為空,則重新連接資料庫
if(m_pConnection==NULL)
OnInitADOConn();
// 創建記錄集對象
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 取得表中的記錄
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
// 捕捉異常
catch(_com_error e)
{
// 顯示錯誤信息
AfxMessageBox(e.Description());
}
// 返回記錄集
return m_pRecordset;
}

// 執行SQL語句,Insert Update _variant_t
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
// _variant_t RecordsAffected;
try
{
// 是否已經連接資料庫
if(m_pConnection == NULL)
OnInitADOConn();
// Connection對象的Execute方法:(_bstr_t CommandText,
// VARIANT * RecordsAffected, long Options )
// 其中CommandText是命令字串,通常是SQL命令。
// 參數RecordsAffected是操作完成後所影響的行數,
// 參數Options表示CommandText的類型:adCmdText-文本命令;adCmdTable-表名
// adCmdProc-存儲過程;adCmdUnknown-未知
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
return false;
}
}

void ADOConn::ExitConnect()
{
// 關閉記錄集和連接
if (m_pRecordset != NULL)
m_pRecordset->Close();
m_pConnection->Close();
// 釋放環境
::CoUninitialize();
}

❷ 如何用VC++ 連接 Mysql資料庫

#include <mysql.h>

main()
{
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char *server = "localhost";
char *user = "root";
char *password = ""; /* 此處改成你拍含的密碼 */
char *database = "mysql";
conn = mysql_init(NULL);

/* Connect to database */
if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0))
{
fprintf(stderr, "%sn", mysql_error(conn));
exit(1);
}

/* send SQL query */
if (mysql_query(conn, "show tables"))
{
fprintf(stderr, "%sn", mysql_error(conn));
清巧 exit(1);
}
res = mysql_use_result(conn);

/* output table name */
printf("MySQL Tables in mysql database:n");

while ((row = mysql_fetch_row(res)) != NULL)
{
printf("%s n", row[0]);
}

/* close connection */
mysql_free_result(res);
答賀鍵mysql_close(conn);
}

❸ 在VC6.0中,如何操作Access資料庫」壓縮和修復資料庫「功能

cdatabase*
m_pdatabase;
crecordset*
m_precordset;
m_pdatabase=new
cdatabase;
try
{
m_pdatabase->open("dbstu.mdb");
m_precordset=new
crecordset(m_pdatabase);
}
以上是建立資料庫連接和數據集對象,有了m_precordset對象,就可以對資料庫進行查詢操作。
cstring
strselect(_t("select
*
from
["));
strselect
+=tbstu;
strselect
+=
_t("]");
m_precordset->open(dbopendynaset,strselect);
查詢stuid:
sql="select
*
from
tbstu
where
stuid="+id
如果stuid是字元串類型的:
sql="select
*
from
tbstu
where
stuid='"+id+"'"
你的資料庫是不是放在程序文件一個目錄?如果不是修改一下。m_pdatabase->open("dbstu.mdb");
還有在文件頭添加:#include

❹ VC怎麼操作資料庫

你必須建立資料庫的工作...
在「控制面板」,選擇「管理工具」,打開數據源(ODBC),然後ODBC數據源管理器對話框彈出。系統
打開「DNS」選項卡上,單擊「添加」,選擇。附上海塗種植Access驅動程序(* mdb)中,單擊「完成」,然後輸入數據源的名稱和說明。 (如果你是在其他人的代碼,數據源的名稱可能得到,所以你必須找到工作,他使用的數據源名稱)。

(你下載的源代碼的資料庫的路徑),然後選擇資料庫。

它只是設置。 。 。

❺ 急。。哪位高手,能詳細的給我講一下vc連接資料庫的步驟。。。著急用,,謝謝。

VC++ ADO操作資料庫方法步驟

大致步驟:

1, 引入液老ADO庫定義文件凳洞,初始化COM環境

2, 初始化connection指針,連接資料庫並打開

3, 利用已經建立好的連接,通過connection,command或者recorder對象操作資料庫,對數據進行查詢,處理等操作

4, 使用完畢後,關閉資料庫,釋放指針,並注釋COM

示常式序如下:

#include "stdafx.h"

#include "iostream"

#include "string"

#include "vector"

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

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

CoInitialize(NULL); //初始化COM環境

_ConnectionPtr pMyConnect(__uuidof(Connection));//定義連接對象並實例化對象

_RecordsetPtr pRst(__uuidof(Recordset));//定義記錄集對象並實例化對象

try

{

/*打開數據棗埋枯庫「access2007」 */

pMyConnect->Open("Provider=Microsoft.ACE.OLEDB.12.0;DataSource=xtreme.accdb;Persist Security Info=False;","","",adModeUnknown);

} catch (_com_error &e)

{

cout<<"資料庫初始化錯誤"<<endl;

cout<<e.Description()<<endl;

cout<<e.HelpFile()<<endl;

return 0;

}

cout<<"連接成功"<<endl;

try

{

pRst=pMyConnect->Execute("select * from Employee",NULL,adCmdText);

if(!pRst->BOF)

pRst->MoveFirst();

else

{

cout<<"表內數據為空"<<endl;

return 0;

}

vector<_bstr_t> column_name;

/*存儲表的所有列名*/

for(int i=0; i< pRst->Fields->GetCount();i++)

{

cout<<pRst->Fields->GetItem(_variant_t((long)i))->Name<<endl;

column_name.push_back(pRst->Fields->GetItem(_variant_t((long)i))->Name);

}

/*對表進行遍歷訪問*/

while(!pRst->adoEOF)

{

vector<_bstr_t>::iterator iter=column_name.begin();

for(iter;iter!=column_name.end();iter++)

{

if(pRst->GetCollect(*iter).vt !=VT_NULL)

{

cout<<(_bstr_t)pRst->GetCollect(*iter)<<endl;

}

else

cout<<"NULL"<<endl;

}

pRst->MoveNext();//關閉記錄集

cout<<endl;

}

}catch(_com_error &e)

{

cout<<e.Description()<<endl;

cout<<e.HelpFile()<<endl;

return 0;

}

/*關閉資料庫並釋放指針*/

try

{

pRst->Close(); //關閉記錄集

pMyConnect->Close();//關閉資料庫

pRst.Release();//釋放記錄集對象指針

pMyConnect.Release();//釋放連接對象指針

}catch(_com_error &e)

{

cout<<e.Description()<<endl;

cout<<e.HelpFile()<<endl;

return 0;

}

CoUninitialize(); //釋放COM環境

return 0;

}

說明:

本程序是在vs2008和access2007上編譯通過的,如果有編譯問題,可能因版本不同引起一些問題。

連接字元串因數據源不同而不同,所以因情況而變,可以直接連接ODBC的數據源,也可以直接連接其提供驅動的數據源。

❻ 怎樣用vc++ 6.0訪問SQL Server資料庫

從功能簡單的資料庫(如Jet Engine)到復雜的大型資料庫系統(如oracle),VC++6.0都提供了一些編程介面。本文主要介紹以下五種: 1.ODBC API;2.MFC ODBC類;3.MFC DAO類;(數據訪問對象)4.MFC的OLE/DB;5.ActiveX數據對象(ADO)。6.RDO遠程數據訪問
1.開放資料庫連接(ODBC API):提供了一個通用的編程介面,允許程序與多種不同的資料庫連接。它為Oracle,SQL Server,MS Excel等都提供了驅動程序,使得用戶可以使用SQL語句對資料庫進行直接的底層功能操作。在使用ODBC API時,用戶須引入的頭文件為 "sql.h ", "sqlext.h ", "sqltypes.h "。用ODBC API創建資料庫應用程序遵循一定的基本步驟:
第一步是分配ODBC環境,使一些內部結構初始化。完成這一步,須分配一個SQLHENV類型的變數在ODBC環境中做句柄使用。
第二步是為將要使用的每一個數據源分配一個連接句柄,由函數SQLALLocHandle()完成。
第三步是使用SQLConnect()把連接句柄與資料庫連接,可以先通過SQLSetConnectAttr()設置連接屬性。
然後就可以進行SQL語句的操作,限於篇幅,相關的函數就不具體介紹了,讀者可以參考相關書籍。
操作完成後,用戶取回相應的結果,就可以取消與資料庫的連接。
最後需要釋放ODBC環境。
ODBC API的特點是功能強大豐富,提供了非同步操作,事務處理等高級功能,但相應的編程復雜,工作量大。
2.MFC ODBC類:MFC1.5後的版本里引入封裝了ODBC功能的類。通過這些類提供與ODBC的介面,使得用戶可以不須處理ODBC API中的繁雜處理就可以進行資料庫操作。主要的MFC ODBC類如下。
CDatabase類:一個CDatabase對象表示一個到數據源的連接,通過它可以操作數據源。應用程序可使用多個CDatabase對象:構造一個對象並調用OpenEx()成員函數打開一個連接。接著構造CRecordSet對象以操作連接的數據源,並向CDatabase對象傳遞記錄集構造程序指針。完成使用後用Close()成員函數銷毀CDatabase對象。一般情況下並不需要直接使用CDatabase對象,因為CRecordSet對象可以實現大多數的功能。但是在進行事務處理時,CDatabase就起到關鍵作用。事務(Transaction)指的是將一系列對數據源的更新放在一起,同時提交或一個也不提交,為的是確保多用戶對數據源同時操作時的數據正確性。
CRecordSet類:一個CRecordSet對象代表一個從數據源選擇的一組記錄的集合-記錄集。記錄集有兩種形式:snapshot和dynaset。前者表示數據的靜態視圖,後者表示記錄集與其他用戶對資料庫的更新保持同步。通過CRecordSet對象,用戶可以對資料庫中的記錄進行各種操作。
CRecordView類:CRecordView對象是在空間中顯示資料庫記錄的視圖。這種視圖是一種直接連到一個CRecordSet對象的格式視圖,它從一個對話框模板資源創建,並將CRecordSet對象的欄位顯示在對話框模板的控制項里。對象利用DDX和RFX機制,使格式上的控制項和記錄集的欄位之間數據移動自動化,也就是說,用戶甚至不要編寫一行代碼就可以實現簡單的資料庫記錄查看程序。
CDBException類:由Cexception類派生,以三個繼承的成員變數反映對資料庫操作時的異常:
m_nRetCode:以ODBC返回代碼(SQL_RETURN)的形式表明造成異常的原因。
m_strError:字元串,描述造成拋出異常的錯誤原因。
m_strStateNativeOrigin:字元串,用以描述以ODBC錯誤代碼表示的異常錯誤。
MFC資料庫類成員函數都能拋出CDBException類型的異常,所以在代碼對資料庫進行操作後監測異常是正確做法。
MFC ODBC類在實際開發中應用最廣,因為它功能豐富,操作相對簡便。
3.MFC DAO(數據訪問對象)編程:DAO用於和微軟的Access資料庫介面。在資料庫應用程序如果只需與Access資料庫介面時,使用DAO編程較方便。其主要類如下。
CDaoWorkspace:CDaoWorkspace對象可以讓一個用戶管理從登陸到離開期間,指定的密碼保護的資料庫會話全過程。大多數情況下不要多個工作區也不要創建明確的工作區對象。因為在打開資料庫和記錄集對象時,它們可以使用DAO預設工作區。
CDaoDatabase:代表一個連接,類似上述CDatabase類。
CDaoRecordSet:用來選擇記錄集並操作,類似上述CRecordSet類。
CDaoRecordView:類似上述CRecordView類。
CDaoException:類似上述CDBException類。
CDaoTableDef:表示基本表或附加表的定義。每個DAO資料庫對象包括一個稱為TableDef的收集,包含所有存儲的DAO表定義對象。CDaoTableDef對象可以用來控製表定義。
CDaoQueryDef:CDaoQueryDef對象表示了一個查詢定義(querydef)。
CDaoFieldExchange:支持資料庫類使用的DAO欄位交換(DFX)常式。也可處理事務,類似MFC ODBC類。
MFC DAO僅用來支持Access資料庫,應用范圍相對固定。
4.OLE DB:OLE DB在數據提供程序和用戶之間提供了靈活的組件對象模型(COM)介面,這種靈活性有時會使得操作復雜化。OLE DB框架定義了應用的三個基本類。
數據提供程序Data Provider:擁有自己的數據並以表格形式顯示數據的應用程序。提供OLE DB的行集COM介面,期顯示範圍可以從單一數據表格的簡單提供者知道更復雜的分布式資料庫系統。
使用者Consumers:使用OLE DB介面對存儲在數據提供程序中的數據進行控制的應用程序。用戶應用程序歸為使用類。
服務提供程序Service Provider:是數據提供程序和使用者的組合。服務提供程序沒有自己的數據,但使用
OLE DB使用者介面來訪問存儲在數據提供程序中的數據。然後,服務提供程序通過打開數據提供程序介面使得數據對使用者有效。服務提供程序常用於向應用程序提供高層次服務,比如高級分布式查詢。
OLE DB編程時,用戶使用組件對象開發應用程序。這些組件有:
枚舉器:用於列出可用的數據源;
數據源:代表單獨的數據和服務提供程序,用於創建對話;
對話:用於創建事務和命令;
事務:用於將多個操作歸並為單一事務處理;
命令:用於向數據源發送文本命令(SQL),返回行集;
錯誤:用於獲得錯誤信息。
5.ActiveX數據對象(ADO):是微軟提供的面向對象的介面,與OLE DB類似,但介面更簡單,具有更廣泛的特徵數組和更高程度的靈活性。ADO基於COM,提供編程語言可利用的對象,除了面向VC++,還提供面向其他各種開發工具的應用,如VB,VJ等。ADO在伺服器應用方面非常有用,特別是對於動態伺服器頁面ASP(Active Server Page)。
ADO對象結構類似於OLE DB,但並不依靠對象層次。大多數情況下,用戶只需要創建並只使用需要處理的對象。下面的對象類組成了ADO介面。
Connection:用於表示與資料庫的連接,以及處理一些命令和事務。
Command:用於處理傳送給數據源的命令。
Recordset:用於處理數據的表格集,包括獲取和修改數據。
Field:用於表示記錄集中的列信息,包括列值和其他信息。
Parameter:用於對傳送給數據源的命令之間來回傳送數據。
Property:用與操作在ADO中使用的其他對象的詳細屬性。
Error:用於獲得可能發生的錯誤的詳細信息。
在VC++使用ADO需要進行COM操作,詳細方法在此就不贅述了。
在當今流行的分布式開發環境下,VC++6.0在資料庫開發方面有較強的優勢,學會
在不同的場合選用不同的技術,對開發人員來說是必要的技術。

❼ 用VC怎麼連接SQL資料庫

我用的是數據源ODBC。先打開控制面板上的管理工具。然後打開數據源。添加描述數據什麼。然後去到vc那裡。新建單個文檔。下一步選擇W資料庫查看使用文件支持,單擊DatabaseSource按鈕。選擇之前你設好的數據源。就連好了資料庫了。

❽ VC++對資料庫的操作

你弊汪寫的這個m_strSource+=strSQL; 沒有用啊?也沒有事先進行查詢。
可以這樣:
UpdateData(TRUE);
CDBVariant var;
memset(var,0,sizeof(Var));
m_recordset.strFilter = strSQL;//這個SQL語句根據你輪坦的需要自己寫
m_recordset.Requery();
while(!m_recordset.IsEOF() && m_recordset.GetCount() > 0)
{
for(int i = 0; i<m_recordset.m_nFields-1; i+=1)
{
GetFieldValue(i,var);
switch(var.m_dwType)
{
case DBVT_STRING:
case DBVT_WSTRING:
m_strSource += *var.m_pstring;
break;
case DBVT_LONG:
break;
m_strSource += itoa(var.m_lVal);//如果是UNICODE則是_wtoa(var.m_lVal);
/租桐仔/等等
default:
m_strSource += "?";
}
m_strSource += m_recordset.
}
UpdateData(FALSE);
//jiangmeng,2009,5,20

❾ 在VC6中,使用ODBC的SQL語句操作資料庫時,如何提交和回滾事務

BEGIN
TRAN
為開始事務
COMMIT
TRAN
為提交事務
ROLLBACK
TRAN
為回滾事務
BeginTrans
啟動新的事務,之後任何改變不會立即提交
CommitTrans
保存所有更改並結束當前事務。它也可以啟動新事務。
RollbackTrans
取消當前事務中所做的任何更改並結束事務。它也可以啟動新事務。

❿ 如何在VC++中使用ACCESS資料庫

很簡單,建好資料庫表後,到控制面板--管理工具的數據源中,添加你建資料庫驅動,即是設置數據源。命個名字。以便在VC程序中連接這個數據源。就可以用了。
在類中聲明一個資料庫對象。
CDatabase m_database;
m_database.Open(_T("數據源名");這樣就連接了數據源。
C**Recordset m_recordset;//這個記錄集是和你表相聯的類。關聯你會吧,就是在工作區中新建一個類,該類命名為C**Recordset。選擇基類CRecordset.向導會彈出一個對話框,然後你找到你建表的目錄,雙擊你要關聯的表。向導就會自動完成。這個記錄集,你完全要可不要動。在程序中直接引用就形了。
m_recordset(&m_database);//記錄集關聯資料庫。
CString csSQL;
csSQL=_T("");//字元串初始化
csSQL=_T("select * from **/*表名*/where CHEPAIHAO_ID=%d"),1);

m_recordset.Open(AFX_DB_DEFAULT_TYPE,csSQL);//打開記錄集第一行。
if(m_recordset.GetRecordCount()==0)
{
csSQL.Format(_T("insert into **/*表名*/ values(%d,\'%d-%d-%d\')"),m_chepaihao,m_datatime.GetYear(),m_datatime.GetMonth,m_datatime.GetDay());
//其中m_chepaihao是與車牌編輯框相關聯的字元串,m_datatime是與日期控制項相關聯的Time變數。
m_database.ExecuteSQL(csSQL);//
m_database.Close();
}
//這就添加了一行。
當然這是簡化的主要操作。你想,如果要添加一行,一般就是在對話框中,按一個按鈕,彈出令一個對話框,從這個對話框中填上車牌號,和選擇日期。然後按確定按鈕。即執行上面的代碼,添加了一行。
自己多想點。如果會VC難不到你的。

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:335
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:378
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:612
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:32
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:942
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:739
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:802
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:510
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:371