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));
}