请问执行SQL命令的方式有几种?MSND 上怎么没有得查询?如_ConnectionPtrt 的用法!

wrongt 2003-10-20 02:27:39
请问执行SQL命令的方式有几种?MSND 上怎么没有查询?如_ConnectionPtrt 的用法!

我知道有:
_ConnectionPtrt m_pConnection;
m_pConnection->Execute(...);


请问还有吗?

如果要执行这句话:
EXEC sp_attach_single_file_db @dbname = 'test',@physname = 'f:\vcprogram\database\test_data.mdf'
应该怎样?谢谢!
...全文
40 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-10-20
  • 打赏
  • 举报
回复
你用累似代码执行 sp_attach_single_file_db 过程。
pengdali 2003-10-20
  • 打赏
  • 举报
回复
举例:

below is from MSDN,you can find a lot of technical article in MSDN if you search"stored procedure and VC"
good luck

Steps To Reproduce Behavior
In the SQL Server 7.0 Query Analyzer select the test database Pubs.


Create the following stored procedure. This stored procedure returns a recordset and an out parameter count.



if exists (select * from sysobjects where id = object_id(N'[dbo].[GetJobs]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop proc GetJobs
go
create proc GetJobs @id as int, @count as int [out] as
begin
Select @count = Count(*) from jobs where job_id >@id
Select * from jobs where job_id >@id
end
go




Use VC App Wizard to create a new console application and modify the code as follows:



#include "stdafx.h"
#include "stdio.h"
#import "C:\PROGRA~1\COMMON~1\System\ado\msado15.dll" no_namespace rename ("EOF", "EOF2")

struct InitOle {
InitOle() { ::CoInitialize(NULL); }
~InitOle() { ::CoUninitialize(); }
} _init_InitOle_;

int main(int argc, char* argv[])
{
_variant_t varErr((long)0, VT_ERROR);
_CommandPtr comm(__uuidof(Command));
_ConnectionPtr conn(__uuidof(Connection));

_bstr_t connstr="Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=pubs;Data Source=(local)";
conn->Open(connstr, "", "", adConnectUnspecified);
comm->ActiveConnection=conn;
comm->CommandText="GetJobs";
comm->CommandType = adCmdStoredProc ;
comm->Parameters->Refresh();
_variant_t recs;

comm->Parameters->Item[_variant_t((short)1)]->Value= _variant_t((long)5);
_RecordsetPtr rs = comm->Execute(&recs, &vtMissing,adCmdStoredProc);

_variant_t recordcount= comm->Parameters->Item[_variant_t((short)2)]->Value;

printf("recordcount = %li\n", (long)recordcount);
return 0;
}



Change the Datasource, User ID and password in the connection string above.




The recordcount variant that the above code returns is of type VT_NULL rather than the number of records that the stored procedure returns.
qdubit 2003-10-20
  • 打赏
  • 举报
回复
同意二楼的做法!
txlicenhe 2003-10-20
  • 打赏
  • 举报
回复
我的电脑没装VC
wrongt 2003-10-20
  • 打赏
  • 举报
回复
to txlicenhe(马可) :这样执行会出错的,难道你没试过吗?出错信息:IDispatch error #3092

txlicenhe 2003-10-20
  • 打赏
  • 举报
回复
m_pConnection->Execute("EXEC sp_attach_single_file_db @dbname = 'test',@physname = 'f:\vcprogram\database\test_data.mdf'");
wrongt 2003-10-20
  • 打赏
  • 举报
回复
我知道放在查询分析器可以运行,但如果用VC来做,应该怎样?
yujohny 2003-10-20
  • 打赏
  • 举报
回复
EXEC sp_attach_single_file_db @dbname = 'test',@physname = 'f:\vcprogram\database\test_data.mdf'
就这样放在查询分析器都可以运行了
txlicenhe 2003-10-20
  • 打赏
  • 举报
回复
1:查询分析器中直接运行
2:命令行下运行(先存为脚本文件)

isql -S 服务器名 -U sa -P 密码 -i "c:\aa.sql"
osql -U sa -P -S DB-Server -d SPVSDB -o err.txt -i c:\aa.sql -b
3:前台开发工具中用ADO执行



22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧