vcsqlodbc
⑴ sql如何連接odbc資料庫,vc怎麼連接odbc資料庫
建議使用ado來連接,使用odbc比較繁瑣的,如下是我精心總結的使用ado連接資料庫方法
*******************************************
**********首先是連接Access資料庫***********
*******************************************
@@@@@@@以下在VC6.0環境中都能實現@@@@@@@@@@@
================ADO方法:==================
|||||針對Access2003:---->參照實例Ado6666.zip文件
//首先要在文件的頭部引入一個動態鏈接庫:
#import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF") \
rename ("BOF","adoBOF")
//連接指針,實例方法一
_ConnectionPtr pConn(__uuidof(Connection));
//連接指針,實例方法二
_ConnectionPtr pConn; pConn.CreateInstance(__uuidof(Connection));
//對於ADO的連接,要指定一個Provider和一個數據源
//ADO連接Access的Provider是Microsoft.Jet.OLEDB.4.0而數據源就是一個Access文件
Provider = Microsoft.Jet.OLEDB.4.0;
Data Source = ×××.mdb
//調用Open函數打開連接
//Open的第一個參數是連接字元串(ConnectionString),即由Provider和Data Source組成的一個字元串
//第二個和第三個參數是數據源的用戶名和密碼,如果沒有給它們指定,則為空字元串
pConn->Open("","","",adConnectUnspecified);
//打開記錄集兩種方式
//方式一: 該方式打開一個SQL語句執行的內容,且能夠對記錄集進行查詢、修改、添加和刪除
pRset->Open("SELECT * FROM 學生",(_variant_t)((IDispatch*)pConn),adOpenDynamic,adLockOptimistic,adCmdText);
//方式二: 該方式打開一個SQL語句執行的內容,與「方式一」所不同的是,我們只能對其查詢
pRset = pConn->Execute("SELECT * FROM 學生",NULL,adCmdText);
//另加說明:還有其他打開方式,如利用_CommandPtr指針對象,也是可以有同樣的操作的
//記錄集和資料庫的練級的關閉
pRset->Close(); //關閉
pRset.Release(); //釋放
pRset = NULL; //設其值為NULL,防止到處亂指
pConn->Close(); //關閉
pConn.Release(); //釋放
pConn = NULL; //設其值為NULL,防止到處亂指
-------------------------------------------------------------------------------------------
|||||針對Access2007:---->參照實例Ado7777.zip文件
我們知道Access2007文件的後綴名是.accdb,經過測試我們知道,使用Microsoft.Jet.OLEDB.4.0 Provider
已經不能打開資料庫,微軟給我們提供了一個支持Access2007資料庫連接的Provider:Microsoft.ACE.OLEDB.12.0
只是這樣還不夠,還需要一個數據引擎,我從網上下了一個:AccessDatabaseEngine.exe,安裝之後就可以用了。
其他操作和連接Access2003大同小異,沒有什麼區別。
-------------------------------------------------------------------------------------------
|||||針對SQL Server2005:---->參照實例DBLinkToSS2005.zip文件
對於ADO技術的使用,只要做好連接字元串,其他操作基本相同
對於連接SQL Server2005,主要還是ConnectionString的問題,它的ConnectionString是:
Provider=MSDASQL.1;Password=lanche;Persist Security Info=True;User ID=sa;Data Source=mysqlserver2005ds;Initial Catalog=master
這段代碼比較長,不容易記住,但是沒有必要,有一種簡便的方法,可以准確無誤地做好連接字元串的准備
方法如下:
1,向對話框中添加兩個ActiveX控制項:Microsoft ADO Data Control 6.0(SP6)和Microsoft DataGrid Control 6.0(SP6)
要注意的是,在"Insert Active Control"對話框中還有一個與Microsoft DataGrid Control 6.0類似的控制項:DBGrid Control,
千萬別加錯了!
2,打開Microsoft ADO Data Control 6.0(SP6)控制項的屬性對話框,在標簽控制項中選擇Control標簽,點擊"Build",將會彈出一個數據
連接屬性對話框,這里有很多種連接,當然我不可能把所有的情況都說一遍,現在我只說說現在我的做法:
【提供程序】選擇Microsoft OLEDB DB Provider for ODBC Drivers【連接】選擇一個數據源,如我利用
SQL Server Native Client 10.0驅動程序建立了一個名為"mysqlserver2005ds"數據源
3,如果測試連接成功後,即可以得到一個ConnectionString了
-------------------------------------------------------------------------------------------
|||||針對Oracle 11g:---->參照實例DBLinkToSS2005.zip文件
連接Oracle11g的方法和連接SQL Server2005的方法是一樣的,在這里我只給出我做的實例的ConnectionString
Provider=MSDASQL.1;Password=lanche;Persist Security Info=True;User ID=system;Data Source=Oracle ODBC for Visual C++
###########################################################################################
備註:
1,其他資料庫連接,比如到SQL Server2008(SQL Server2000不必說,因為它已經退出歷史舞台),還有Oracle10g,它應該和Oracle11g的連接
方法一樣,沒什麼變化。還有一類資料庫,我不想討論,比如MySQL,DB2等。
2,還有三種連接資料庫技術:ODBC,OLE,DAO,這三種方法比較古老,ODBC只是在數據源方面還很有用,至於用它來做資料庫開發,是不適宜的;
DAO是建立在OLE之上的一種技術,如今出現了ADO技術,雖說DAO技術在某些方面還是有一些優勢,但還是被ADO給淘汰了,據我所知,DAO
已經被淘汰了,目前ADO是使用最廣泛也是最便利的技術,所以綜合這四種技術,在資料庫開發中推薦使用ADO.故不再討論其他連接技術了。
…………………………………………Summed on by Chengming………………………………………………
……………………………If you have any question,please contact me…………………………………
…………………My QQ number is 1204833748 and my e-mail is [email protected]…………………
⑵ vc程序,SQL資料庫,存儲過程,錯誤提示:[Microsoft][ODBC SQL Server Driver]沒有執行可選特性,求解
應該是資料庫文件 創建的時候沒有建立'zy_insert'存儲過程,重新創建 這個存儲過程試試,或者 乾脆找到建資料庫的sql腳本重新執行一遍。
⑶ 在VC6中,使用ODBC的SQL語句操作資料庫時,如何提交和回滾事務
BEGIN
TRAN
為開始事務
COMMIT
TRAN
為提交事務
ROLLBACK
TRAN
為回滾事務
BeginTrans
啟動新的事務,之後任何改變不會立即提交
CommitTrans
保存所有更改並結束當前事務。它也可以啟動新事務。
RollbackTrans
取消當前事務中所做的任何更改並結束事務。它也可以啟動新事務。
⑷ 如何在VC中嵌入SQL語句,通過ODBC訪問SQL Server
環境:WindowsXP ; VC++6.0 + sp5 1。通過odbc直接執行SQL語句CDatabase mydb;CRecordset myRecord;CString strSQL;CDBVariant cv;try{if ( !mydb.IsOpen() )mydb.OpenEx("資料庫連接字元串",CDatabase::noOdbcDialog);
⑸ 如何用VC連接SQL資料庫!ODBC數據源類型的!!
(1).在文件stdafx.h中最後一個#endif的前一行寫入
#import "C:\program files\common files\System\ado\msado15.dll" no_namespace \
rename("EOF","EndOfFile") \
rename("LockTypeEnum","newLockTypeEnum")\
rename("DataTypeEnum","newDataTypeEnum")\
rename("FieldAttributeEnum","newFieldAttributeEnum")\
rename("EditModeEnum","newEditModeEnum")\
rename("RecordStatusEnum","newRecordStatusEnum")\
rename("ParameterDirectionEnum","newParameterDirectionEnum")
如果你的系統不是安裝在C盤的話就把#import 後面的C改成系統所有的盤
(2).在C***App類的
public:下加入
_RecordsetPtr m_pADOSet;
bool ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL);
在private:下加入_ConnectionPtr ADOConn;
在class C***App : public CWinApp
{
...
};之後#endif之前加入extern C***App theApp;
(3)在BOOL C***App::InitInstance()函數中Enable3dControls(); // Call this when linking to MFC statically這一行下面加入
if( FAILED(::CoInitialize(NULL)) )
{
AfxMessageBox("ADO Init failed");
return false;
}
try
{
ADOConn.CreateInstance(__uuidof(Connection));
ADOConn->Open("DSN=OBDC數據源;Provider=MSDASQL","用戶","密碼", adConnectUnspecified);//這一行要自已修改
}
catch(_com_error &e)
{
CString err;
err.Format("%s", (char*)(e.Description()) );
AfxMessageBox(err);
}
catch(...)
{
AfxMessageBox("Unknown Error...");
}
m_pADOSet.CreateInstance(__uuidof(Recordset));
並在文件最後加上如下代碼:
bool C***App::ADOExecute(_RecordsetPtr &ADOSet, _variant_t &strSQL)
{
if ( ADOSet->State == adStateOpen) ADOSet->Close();
try
{
ADOSet->Open(strSQL, ADOConn.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdUnknown);
return true;
}
catch(_com_error &e)
{
CString err;
err.Format("ADO Error: %s",(char*)e.Description());
AfxMessageBox(err);
return false;
}
}
最後就可以在登錄時執行SQL語句了,比如用戶為CString strUser, 密碼是CString strPwd;資料庫表是user_table(user_id, user_name, user_pwd)則
_variant_t strQuery, Holder;
strQuery = "select * from user_table where user_name='"+strUser +"' and user_pwd='"+ strPwd +"'";
theApp.ADOExecute(theApp.m_pADOSet, strQuery);
int iCount = theApp.m_pADOSet->GetRecordCount();
if ( 0==iCount )
{
AfxMessageBox(_T("密碼錯誤"), MB_ICONEXCLAMATION);
return;
}
else
{
AfxMessageBox(_T("登錄成功"), MB_ICONEXCLAMATION);
}
⑹ vc下用odbc連接mysql
::SQLConfigDataSource(NULL,ODBC_ADD_DSN,"SQL Server","DSN=aaa\0 SERVER=(Local)\0
DATABASE=mydb\0\0"); //odbc中添加一個數據源,數據源名稱:aaa,本地伺服器,資料庫名:mydb
try
{
CDatabase m_DbOdbc; //創建資料庫對象
m_DbOdbc.OpenEx("DSN=aaa;UID=user;PWD=pa;",CDatabase::noOdbcDialog); //鏈接並打開資料庫
}
catch(CDBException *e)
{
return FALSE;
}
要包含頭文件
#include <odbcinst.h>
#include <afxdb.h>
⑺ 怎麼用odbc將sql和vc建立聯系
在VC下的view——》class wizard——>add class 選擇基類為CRecordset,取個子類名字,下一步就是和ODBC建立聯系了,按操作提示進行就OK了
⑻ 想用VC6.0連接SQL 2005,需要配置ODBC嗎,他們三者之間的關系是怎樣的,請各位解答
無需配置,安裝完SQL後,系統會自動將SQL加入連接池
⑼ VC SQL Server ODBC創建DSN數據源的問題
如果他的電腦上也有SQL server,也配置ODBC的話,你看一下,在ODBC中測試連接是否成功,然後再考慮是不是程序的問題
