mfcsqlado
Ⅰ MFC中使用ADO操作sql資料庫,一個小問題請求各位幫忙 在線等!!
INSERT語句寫法如下:
CString strSQL;
strSQL.Format("InSert InTo DepB(m_Depld,m_DepName,m_Userld)Values(%d,'%s',%d)",m_Depld,m_DepName,m_Userld);
//其中DepB後面的三個m_開頭的要對應到資料庫中的欄位名。
Ⅱ MFC用ADO連接SQL Server不聯網單機編寫的程序,怎麼拷給其他機器
.mdf是sqlserver的資料庫文件,你要把它附加到sqlserver之後通過oledb的provider用ado連接才行
Ⅲ MFC 使用ADO讀取sqlserver2000資料庫 還能使用ADO 操作excel嗎
把excel當做資料庫,做個連接就可以操作了
如用ado方法:在delphi中加入adoconnection控制項,雙擊後選擇jet 4.0 ole db,在連接頁中
選擇資料庫的名字(.xls),再雙擊全部(all)頁中的Extended Properties,在value中
填入Excel 8.0,OK!
在控制項ADODataSet1的CommandText屬性中選擇了select * from Sheet1$後,別忘了在
Sheet1$的兩邊加上中括弧[],否則出現「FROM子句語法錯誤」。或者用ADOQuery1控制項:在
它的SQL屬性中寫入:select * from [Sheet1$]。
======================================
送你個實例:
今天剛寫個這方面的程序段,貼出來,你做下修改
//open excel
procere TForm1.ConnectClick(Sender: TObject);
var
str,path,xlsName:string;
begin
//connect excel
path:=extractfilepath(application.exename);
OpenDialog1.InitialDir :=path;
OpenDialog1.Filter :='*.xls|*.xls';
if OpenDialog1.Execute then
xlsName :=extractfilename(OpenDialog1.FileName);
str:='Provider=Microsoft.Jet.OLEDB.4.0;' +
'Data Source= ' + path + xlsName + ';Extended Properties=Excel 8.0;' +
'Persist Security Info=False';
conn.Close;
conn.ConnectionString :=str;
try
conn.Connected :=true;
Adotable1.Close;
Adotable1.TableDirect:=True ;
adotable1.tablename:='sheet1$';
tType.ItemIndex :=-1;
try
adotable1.Open;
dbgrid1.Columns[0].Width :=50;
dbgrid1.Columns[1].Width :=50;
dbgrid1.Columns[2].Width :=50;
dbgrid1.Columns[3].Width :=80;
dbgrid1.Columns[4].Width :=80;
dbgrid1.Columns[5].Width :=200;
except
showmessage('Open Error');
end;
except
self.Caption :='Excel connect error';
exit;
end;
end;
//導入,我使用批處理,adoquery1.locktype->ltBatchOptimistic
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from tablename where 0=1');
ADOQuery1.Open;
ADOTable1.First;
while not ADOTable1.Eof do
begin
ADOQuery1.Append;
ADOQuery1.FieldByName('xx').AsString :=trim(Adotable1.fieldbyname('yy').AsString );
//和上句相同,相應欄位數據導入即可
ADOQuery1.Post;
ADOTable1.Next;
end;
ADOQuery1.UpdateBatch();
showmessage('over');
----------------------------
下面是個查詢的示例,它通過用於 Jet 的 OLE DB 提供程序查詢 Excel 電子表格。
INSERT INTO urtable
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')
---------------------------
ADOConnection 指向excel, 用Jet4.0 ,Extended properties設為Excel 8.0
SELECT * into table FROM Tab1 IN [ODBC]
[ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;]
--------------------------------------------------
SELECT *
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="C:\temp\b.xls";Extended Properties="Excel 5.0;HDR=Yes;";Persist Security Info=False')
Ⅳ VC++ MFC ADO連接SQL2008
我之前做項目總結的MFCADO鏈接資料庫
ADO操作SQL
Visual C++提供了多種多樣的資料庫訪問技術——ODBC API、MFC ODBC、DAO、OLE DB、ADO等。
其中ADO技術是基於OLE DB的訪問介面,它繼承了OLE DB技術的優點,並且,ADO對OLE DB的介面作了封裝,定義了ADO對象,使程序開發得到簡化,ADO技術屬於資料庫訪問的高層介面。
1.導入相關庫文件(一般在StdAfx.h中導入)
#import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace \
rename("EOF","adoEOF")
在#ifdef _UNICODE前面
2.初始化COM庫(一般在InitInstance()中初始化)
BOOL CadoconnectionApp::InitInstance()
{
CWinApp::InitInstance();
AfxOleInit();//初始化COM庫
AfxEnableControlContainer();
}
3 介面簡介
ADO庫包含三個基本介面:
__ConnectionPtr介面 創建資料庫連接
__CommandPtr介面 執行SQL命令
__RecordsetPtr介面 返回結果集
__ConnectionPtr介面返回一個記錄集或一個空指針。通常使用它來創建一個數據連接或執行一條不返回任何結果的SQL語句,如一個存儲過程。用__ConnectionPtr介面返回一個記錄集不是一個好的使用方法。
__CommandPtr介面返回一個記錄集。它提供了一種簡單的方法來執行返回記錄集的存儲過程和SQL語句。在使用__CommandPtr介面時,可以利用全局__ConnectionPtr介面,也可以在__CommandPtr介面里直接使用連接串。如果只執行一次或幾次數據訪問操作,後者是比較好的選擇。但如果要頻繁訪問資料庫,並要返回很多記錄集,那麼,應該使用全局__ConnectionPtr介面創建一個數據連接,然後使用__CommandPtr介面執行存儲過程和SQL語句。
__RecordsetPtr是一個記錄集對象。與以上兩種對象相比,它對記錄集提供了更多的控制功能,如記錄鎖定,游標控制等。同__CommandPtr介面一樣,它不一定要使用一個已經創建的數據連接,可以用一個連接串代替連接指針賦給__RecordsetPtr的connection成員變數,讓它自己創建數據連接。如果要使用多個記錄集,最好的方法是同Command對象一樣使用已經創建了數據連接的全局—ConnectionPtr介面,然後使用__RecordsetPtr執行存儲過程和SQL語句。
4.連接資料庫
在對話框
public:
_RecordsetPtr m_pRecordset;
_ConnectionPtr m_pConnection;
_CommandPtr m_pCommand;
在類的構造函數中創建:
m_pConnection.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pCommand.CreateInstance(__uuidof(Command));
BOOL CADODlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: Add extra initialization here
try
{
m_pConnection->ConnectionTimeout=10;
m_pConnection ->Open("Provider=SQLOLEDB;Data Source= PC-20140312ZLBA;Initial Catalog=CNCDB","dbaccess","dbaccess",adModeUnknown);
///連接資料庫
MessageBox( L"連接資料庫成功");
}
catch(_com_error e)
{
AfxMessageBox(_T("連接資料庫失敗!"));
return TRUE;
}
return TRUE; // return TRUE unless you set the focus to a control
}
5.資料庫操作
m_pConnection ->Execute("delete from TBL_CONNECTLOGS",NULL,adCmdText);
6.關閉連接
void XXXX::OnDestroy()
{
if(m_pConnection ->State)
{
m_pConnection ->Close();
}
m_pConnection =NULL;
}
補充:連接字元串的模式
一般模式
"Provider=SQLOLEDB;Data Source=伺服器;Initial Catalog=資料庫;uid=SQL用戶名;pwd=SQL密碼;"
信任模式
"Provider=SQLOLEDB;Data Source=伺服器;Initial Catalog=資料庫;Integrated Security=SSPI;"
網路模式
"Provider=SQLOLEDB;Data Source=IP地址,埠;Network Library=DBMSSOCN;Initial Catalog=資料庫;UserID=用戶名;Password=密碼;"
注意看下面這兩種寫法,其實是一個意思:
m_pConnect->Open("Provider=SQLOLEDB;Data Source=伺服器;Initial Catalog=資料庫;","sa","123456",-1);
m_pConnect->Open("Provider=SQLOLEDB;Data Source=伺服器;Initial Catalog=資料庫;uid=sa;pwd=123456;","","",-1);
Ⅳ 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";然後再連接試試。
如果還不行,把你的郵箱發給我,我給你發個連接資料庫的類。挺好用的
Ⅵ MFC通過ado連接資料庫sql2000
教你個連接資料庫的方法。首先新建一個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";然後再連接試試。
如果還不行,把你的郵箱發給我,我給你發個連接資料庫的類。挺好用的
Ⅶ MFC通過ado連接資料庫sql2000
看你的需要。如果程序依賴資料庫,那就必須先連接。你說的登錄,很明顯必須先連接,否則後續操作沒意義了。
Ⅷ 在線等!!!mfc ADO連接sql server資料庫的問題
代碼太亂了,看的眼花。
資料庫操作:1.建立連接
2.建立結果集(可以執行SQL語句)
ConnectDataBase(strConnect)函數是用來建立一條與資料庫相連接的語句
CreateInstance()創建一個實例,即創建一條與資料庫的連接
什麼時候創建連接?這得根據效率來,如果頻繁訪問數據,可以DataVisitror構造的時候創建,析構的時候釋放連接資源。第二種是使用的時候建立連接,然後斷開,再使用的時候也是先連接後斷開。
Ⅸ 關於MFC 用ADO連接SQL中_ConnectionPtr 未定義
在stdafx.h中添加如下語句
//導入msado15.dll動態庫
#import "C:\Program Files\Common Files\System\ado\msado15.dll" rename_namespace("ADODB") ename("EOF","ADOEof")using namespace ADODB ; //應用命名空間
Ⅹ MFC 用ADO方式連接SQL SERVER 2008連接不上
""在C語言的作用忘記了?
如果資料庫存放位置是本機,建議使用127.0.0.1
否則:如果是公網,則用域名,區域網則用IP
最好是將連接字串寫在非EXE里,這樣方便發布和修改資料庫伺服器位置、帳號密碼
還有,vc中連通前,你應該在mssql管理器中嘗試連接,如果在mssql管理器中都連接不能,則問題不出在VC中
caseDATABASE_MSSQL:
strcpy_s(data,"Driver={SQLServer};");
strcat_s(data,"Server=");
strcat_s(data,addr);
if(addr[0]!='.')//如果伺服器地址使用".",則不能加埠
{
strcat_s(data,",");
strcat_s(data,port);
}
strcat_s(data,";");
strcat_s(data,"UID=");
strcat_s(data,user);
strcat_s(data,";");
strcat_s(data,"PWD=");
strcat_s(data,pwd);
strcat_s(data,";");
if(strlen(database))
{
strcat_s(data,"Database=");
strcat_s(data,database);
strcat_s(data,";");
}
上面是連接字元串生成代碼,下面是打開連接的函數
intCAdoDataBase::Open(constchar*data)
{
intret=0;
memset(m_strLogin,0,1024);
strcpy_s(m_strLogin,data);
this->Lock();
do
{
try
{
m_pConnection.CreateInstance(__uuidof(Connection));
ret=m_pConnection->Open((_bstr_t)data,"","",adModeUnknown);
m_bFlag=TRUE;
ret=0;
}
catch(_com_errore)
{
m_bFlag=FALSE;
strcpy_s(m_strErrCode,e.Description());
m_pConnection=NULL;
ret=-1;
}
}while(FALSE);
this->UnLock();
returnret;
}