A. vc++鏈接sql2008r2 如何多資料庫多表查詢 如何鏈接
//c:.dll
#import"msado15.dll"no_namespacerename("EOF","EndOfFile")
usingnamespacestd;
int_tmain(intargc,_TCHAR*argv[])
{
::CoInitialize(NULL);
_ConnectionPtrm_pConnection=NULL;
_RecordsetPtrm_pRecordset=NULL;
m_pConnection.CreateInstance(__uuidof(Connection));
m_pRecordset.CreateInstance(__uuidof(Recordset));
_bstr_tstrConnect="Provider=SQLOLEDB.1;Password=123456;PersistSecurityInfo=True;
UserID=sa;InitialCatalog=test1;DataSource=192.168.1.3";
_bstr_tbstrSQL("selectphonefromtest1.dbo.table1whereclass='123'");
try
{
m_pConnection->Open(strConnect,"","",adModeUnknown);
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
_variant_tvstr,vuint;
while(!m_pRecordset->EndOfFile)
{
vuint=m_pRecordset->GetCollect("phone");
unsignedintuintPhone=vuint.ulVal;
//手機號
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
}
catch(_com_errore)
{
return0;
}
if(m_pConnection->State)
{
m_pConnection->Close();
}
::CoUninitialize();
return0;
}
大致流程如下 :
1. _bstr_t strConnect = "Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True; User ID=sa;Initial Catalog=test1;Data Source=192.168.1.3";
需要修改成你自己的IP,sa,密碼
2. _bstr_t bstrSQL("select phone from test1.dbo.table1 where class='123'");
sql需要改成以下這種:
select phone from test1.dbo.table1 where class='123'
union
select phone from test1.dbo.table2 where class='123'
union
select phone from test2.dbo.table1 where class='123'
union
select phone from test2.dbo.table2 where class='123'
union
....
3. int 可以存下一個手機號嗎? 沒有問題?
B. 安裝SQL2008R2版本,提示安裝匯編Microsoft.VC.80,CRT
檢查.net3.5是否啟用安裝
你的cpu是amd的(不然為什麼會報相關錯誤)?
你選那麼多功能基本都用不到,只需要選第一個引擎和後面的管理工具-基本
C. VC連接sql2008.使用CRecordset->Open()時出現錯誤。無法執行,提示如下圖。急求!
檢查OPEN()的參數有沒有寫錯;
檢查其他代碼有沒有問題;
檢查資料庫表內數據是否有越界現象。
如果不行,重裝VC試試。
D. 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);
E. 安裝 VS2008, java, SQL,VC++6.0。 有什麼需要注意的么
先安裝VC6.0,再安裝SQL2000(因為VS2008G帶了更高版的SQL),JAVA的平台無所謂,可以放在D盤
F. 我安裝SQL2008時帶的VS2008為什麼沒C#
SQL2008本來就不帶C#等開發工具,只有個SQL Server Business Intelligence Development Studio這個開發水晶報表的工具。
想安裝C#還得安裝vs2008
G. VS2010連接SQL2008出現「用戶 'sa' 登錄失敗」錯誤,使用windows身份驗證連接成功,跪求大神正解!
1、一種情況是在安裝過程中選擇「混合模式」,但是實際應用中sa的密碼忘記了或是sa密碼丟失時:
a、在SQL Server Management Studio 用Window連接的情況下改實列的「屬性」中「安全性」選中WINDOWS及SQL驗證,再重起SQL伺服器後,新建查詢,執行下面代碼
ALTER LOGIN sa WITH PASSWORD='新密碼'
b、在SQL Server Management Studio 用Window連接的情況下改實列的「屬性」中「安全性」選中WINDOWS及SQL驗證,在SQL伺服器上點擊安全性,即找到根節點->安全性->登錄名->sa. 右鍵sa打開屬性對話框。
1、在「常規」頁中設置sa用戶的密碼,注意密碼不能太簡單,如密碼是sa肯定是通過不了的。
2、在「用戶映射」頁中,確認一下SA用戶有沒有db_owner角色身份。必須要有,要不然sa登錄後什麼高級功能也做不了了。
3、在「狀態」頁中,把「是否允許連接到資料庫引擎」設置為「授予」,把「登錄」設置為「啟用」。
4、點擊確定保存配置。
2、一種情況是在安裝過程中選擇「Windows 身份驗證模式」,則 sa 登錄將被禁用:
在SQL Server Management Studio 用Window連接的情況下將身份驗證模式更改為「SQL Server 和 Windows 身份驗證模式」,則 sa 登錄仍處於禁用狀態。若要啟用 sa 登錄帳戶,請使用 ALTER LOGIN 語句(如上a)。
H. 裝完vs2010,sql2008服務無法開啟, 內牛滿面求救ing
不是安裝順序的問題,也不是什麼盜版。vs10裡面的sql server08是沒有圖形界面的,需要自己載入上去(如果你vs10安裝時沒有出錯的話)。需要NETFRAME30.5,一個系統補丁和ManagementStudio,基本上都可以在MSDN下到。我也是費了好大勁才裝成功的。
I. VC++6.0和SQL 2008
說個我用過的ado封裝類:1.導入這個ado類2.在構造函數或其他地方連接資料庫if(!m_ado.Connect(CAdoDB::DBT_SQL,"資料庫名","密碼","用戶","主機IP"))cout<<"Connect"<<m_ado.GetLastError()<<endl;3.SQL語句增刪改查例:增加數據CStringszSQL;szSQL.Format("INSERTINTOt_adminVALUES('%s','%s')",admin.ID,admin.Pass);if(m_ado.ExecSQL(szSQL)<=0)//執行SQL語句{cout<<"Admin:Add_ID:"<<m_ado.GetLastError()<<endl;}4.要想知道--。可以自己網路找找,很多資料的說。
J. 參數化查詢 ' 用vs2010和SQL2008做的,急求怎麼解決
參數要封裝到SqlParameter[]數組裡面才能被正確識別。
SqlParameter[] prams = {
data.MakeInParam("@fullname", SqlDbType.VarChar, 30, units.FullName),
data.MakeInParam("@tax", SqlDbType.VarChar, 30, units.Tax),
data.MakeInParam("@tel", SqlDbType.VarChar, 20, units.Tel),
data.MakeInParam("@linkman", SqlDbType.VarChar, 10, units.Linkman),
data.MakeInParam("@address", SqlDbType.VarChar, 60, units.Address),
data.MakeInParam("@accounts", SqlDbType.VarChar, 80, units.Accounts),
};
return (data.RunProc("update tb_unit set fullname=@fullname,tax=@tax,tel=@tel,linkman=@linkman,address=@address,accounts=@accounts", prams));
}