谢谢!
解决方案 »
- 帮忙看一下如何设计这几个类?
- winForm子窗体如何获得上级窗体点击菜单的值
- 将获得数据填充到listbox中的问题
- 请问怎样弹出模式对话框并在里面放一个progressbar以显示工作进度?
- C#怎么获取浏览器的浏览记录??
- 怎么把9215875.5转化成大写的人民币符号啊.
- webservice不能返回hashtable或者是nameValueCollection吗
- Winform操作Word遇到80080005 服务器运行失败 (异常来自 HRESULT:0x80080005 (CO_E_SERVER_EXEC_FA
- 如何用foreach語句自動遍歷類中定義的所有成員
- 一个奇怪的问题?!
- Xtragrid第二级窗体为什么不可编辑?
- c#图象和拖放操作问题
1.在sqlserver中创建DTS包2.C#代码调用
using System;
using System.Runtime.InteropServices;
using DTS;namespace DtsInterop
{
class ExecPkgWithEvents
{
public Package2Class package; public void Run()
{
try
{
package = new Package2Class(); object pVarPersistStgOfHost = null; package.LoadFromSQLServer("YOUR_SERVER_NAME", null, null, DTSSQLServerStorageFlags.DTSSQLStgFlag_UseTrustedConnection, null,
null, null, "YOUR_PACKAGE_NAME", ref pVarPersistStgOfHost); package.Execute();
package.UnInitialize();
package = null;
}
catch(System.Runtime.InteropServices.COMException ex)
{
Console.WriteLine("COMException {0}\n{1}\n{2}", ex.ErrorCode, ex.Message, ex.StackTrace);
}
catch(System.Exception ex)
{
Console.WriteLine("Exception\n{0}\n{1}", ex.Message, ex.StackTrace);
}
}
}
}
注:需要引用的COM组件为Microsoft DTSPackage Object Library
The following sample code executes a DTS package that is stored in SQL Server. When an event is fired, a message is sent to the console. Inside the Visual C# .NET project, add a reference to the Microsoft DTSPackage Object Library version 2.0 COM object, and then insert the following code in the C# class file for your project:
using System;
using System.Runtime.InteropServices;
using DTS;namespace DtsInterop
{
//This class loads and executes the DTS package.
class ExecPkgWithEvents {
/* Prior to running this code, create a DTS package and save it to SQL Server. Then set a reference to
// the DTSPackage Object Library version 2.0 COM object.
*/ public Package2Class package; [MTAThread]
static void Main(string[] args)
{
ExecPkgWithEvents app = new ExecPkgWithEvents();
app.Run();
}
public void Run()
{
try
{
package = new Package2Class();
UCOMIConnectionPointContainer CnnctPtCont = (UCOMIConnectionPointContainer) package;
UCOMIConnectionPoint CnnctPt;
PackageEventsSink PES = new PackageEventsSink ();
Guid guid = new Guid("10020605-EB1C-11CF-AE6E-00AA004A34D5"); // UUID of PackageEvents Interface
CnnctPtCont.FindConnectionPoint(ref guid, out CnnctPt);
int iCookie;
CnnctPt.Advise(PES, out iCookie);
object pVarPersistStgOfHost = null; package.LoadFromSQLServer("YOUR_SERVER_NAME", null, null, DTSSQLServerStorageFlags.DTSSQLStgFlag_UseTrustedConnection, null,
null, null, "YOUR_PACKAGE_NAME", ref pVarPersistStgOfHost); package.Execute();
package.UnInitialize();
package = null;
} catch(System.Runtime.InteropServices.COMException ex)
{
Console.WriteLine("COMException {0}\n{1}\n{2}", ex.ErrorCode, ex.Message, ex.StackTrace);
} catch(System.Exception ex)
{
Console.WriteLine("Exception\n{0}\n{1}", ex.Message, ex.StackTrace);
}
} } //This class is responsible for handling DTS Package events. When an event is fired, a message is sent to
//the console.
class PackageEventsSink : DTS.PackageEvents
{ public void OnQueryCancel(string EventSource, ref bool pbCancel)
{
Console.WriteLine("OnQueryCancel({0})", EventSource);
pbCancel = false;
} public void OnStart(string EventSource)
{
Console.WriteLine("OnStart({0})", EventSource);
} public void OnProgress(string EventSource, string ProgressDescription, int PercentComplete, int ProgressCountLow, int ProgressCountHigh)
{
Console.WriteLine("OnProgress({0}, {1}, {2}, {3}, {4})", EventSource, ProgressDescription,
PercentComplete, ProgressCountLow, ProgressCountHigh);
} public void OnError(string EventSource, int ErrorCode, string Source, string Description, string HelpFile, int HelpContext, string IDofInterfaceWithError, ref bool pbCancel)
{
Console.WriteLine("OnError({0}, {1}, {2}, {3}, {4}, {5})", EventSource, ErrorCode, Source, Description,
HelpFile, HelpContext);
pbCancel = false;
} public void OnFinish(string EventSource)
{
Console.WriteLine("OnFinish({0})", EventSource);
} } }