2013-10-11 4 views
0

Я с помощью SQL Server 2012 и Visual Studio 2012. я follwing код в C#:получить данные из SSIS с помощью C#

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Data.SqlClient; 
using Microsoft.SqlServer.Dts.Runtime; 


namespace ssis_project 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void btnExit_Click(object sender, EventArgs e) 
     { 
      this.Close(); 
     } 

     private void btnLogin_Click(object sender, EventArgs e) 
     { 
      /* 
      SqlConnection con = new SqlConnection(@"Data Source=NICK-PC;Initial Catalog=ssis_project;Integrated Security=True;"); 
      SqlDataAdapter sda = new SqlDataAdapter("Select Count(*) from users where username='" + userBox.Text + "' and password ='" + passBox.Text + "'", con); 
      */ 

      Microsoft.SqlServer.Dts.Runtime.Application myAplication = new Microsoft.SqlServer.Dts.Runtime.Application(); 
      Package myPackage = myAplication.LoadPackage(@"D:\SSIS\ssis_project\ssis_project\users.dtsx", null); 


      myPackage.Variables["User::uservar"].Value = this.userBox.Text; 
      myPackage.Variables["User::passvar"].Value = this.passBox.Text; 

      Microsoft.SqlServer.Dts.Runtime.DTSExecResult results = myPackage.Execute(); 
      if (results == Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success) 

       MessageBox.Show("You are logged as: " + myPackage.Variables["User::uservar"].Value + " with pass: " + myPackage.Variables["User::passvar"].Value); 

      //DataTable dt = new DataTable(); 
      //sda.Fill(dt); 
      /* 
      if (dt.Rows[0][0].ToString() == "1") 


       MessageBox.Show("You are logged as: " + userBox.Text + " with pass: " + passBox.Text); 

      else 
      { 
      MessageBox.Show("Please Check your Username and Password"); 
      }*/ 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 
    } 
} 

Если я использую соединение с SQL Server, работает и показать мне

MessageBox.Show("You are logged as: " + userBox.Text + " with pass: " + passBox.Text);

или

MessageBox.Show("Please Check your Username and Password");

Если я загружаю пакет SSIS, он не показывает мне это сообщение.

После Microsoft.SqlServer.Dts.Runtime.DTSExecResult results = myPackage.Execute(); Думаю, мне понадобится if, но я не знаю, как это сделать. Пожалуйста, помогите мне.

+0

Как примечание, при добавлении большого количества кода вам не нужно использовать 'на каждой строке. Выделите весь блок кода и нажмите на кнопку '{}' на панели инструментов. – codingbadger

ответ

1

Ваш if заявление не охраняет состояние, в котором Package.Execute() возвращает что-либо другое, что DTSExecResult.Success. Так как метод Execute может возвращать любого из четырех DTSExecResult значений, вы, вероятно, хотите switch заявления:

 DTSExecResult results = myPackage.Execute(); 
     switch (results) 
     { 
      case DTSExecResult.Success: 
       // do something if the package works 
       break; 
      case DTSExecResult.Failure: 
       // do something else if the package failed 
       break; 
      case DTSExecResult.Canceled: 
       // do yet another something if the package was cancelled 
       break; 
      case DTSExecResult.Completion: 
       // do something completely different if the package ran to completion 
       break; 
     } 

После того, как вы знаете, что фактическое возвращаемое значение, вы можете устранить неисправность дальше.

Смежные вопросы