2016-04-11 12 views
0

(オブジェクト・ターゲットは、[]引数、署名SIG、ブールコンストラクタオブジェクト)ここでは、Excelファイルを読み込み、ファイル名にSQL Serverテーブルを動的に作成し、データを読み込みます。 (「myCommand.ExecuteNonQuery()ステートメントを実行特にながら;)私は表を作成していながら このエラーが発生したは、ExecuteNonQuery()System.RuntimeMethodHandle.InvokeMethodでSSISのスクリプトコンポーネントを使用してC#コードを実行する場合、私はこのエラーを取得

はコードを参照してください: -

SqlConnection myADONETConnection = new SqlConnection(); 
myADONETConnection = (SqlConnection)(Dts.Connections["LANDConn"].AcquireConnection(Dts.Transaction) as SqlConnection); 
SqlCommand myCommand = new SqlCommand(tableDDL, myADONETConnection); 
myCommand.ExecuteNonQuery(); 

私は

+1

デバッグ、および私たちにあなたが送信しているSqlCommandオブジェクトを表示してください... – BugFinder

+0

あなたの「エラーに誤りがありませんメッセージ"。あなたは誰でもあなたを援助できるほどの情報を掲載していません。 –

答えて

0

公共何をすべき?は、ボイドメイン()

{文字列フォルダパス= Dts.Variables [ "ユーザー::フォルダパス"] Value.ToString();

var directory =新しいDirectoryInfo(FolderPath);

FileInfo [] files = directory.GetFiles();

string fileFullPath = "";

foreachの(ファイル中のFileInfoファイル)

{

string filename = ""; 

fileFullPath = FolderPath+"\\"+file.Name;      

filename = file.Name.Replace(".xlsx","");      

string ConStr; 

string HDR; 

HDR="YES"; 

ConStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
      fileFullPath + ";Extended Properties=\"Excel 12.0;HDR=" + 
      HDR + ";IMEX=1\""; 

OleDbConnection cnn = new OleDbConnection(ConStr); 

cnn.Open(); 

DataTable dtSheet = cnn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, 
        null); 

string sheetname; 

sheetname=""; 

foreach (DataRow drSheet in dtSheet.Rows) 

    { 
     if (drSheet["TABLE_NAME"].ToString().Contains("$")) 
     { 
      sheetname=drSheet["TABLE_NAME"].ToString(); 
      OleDbCommand oconn = new OleDbCommand("select * from [" + 
            sheetname + "]", cnn); 
      OleDbDataAdapter adp = new OleDbDataAdapter(oconn); 
      DataTable dt = new DataTable(); 
      adp.Fill(dt); 
      string tableDDL = ""; 
      tableDDL += "IF Not EXISTS (SELECT * FROM sys.objects WHERE 
          object_id = "; 
       tableDDL +="OBJECT_ID(N'[dbo].[" + filename +"]') AND 
          type in (N'U'))"; 
       tableDDL += "Create table [" + filename + "]"; 
       tableDDL += "("; 
       for (int i = 0; i < dt.Columns.Count; i++) 
       { 
        if (i != dt.Columns.Count - 1) 
        tableDDL += "[" + dt.Columns[i].ColumnName + "] " 
           + "NVarchar(max)" + ","; 
        else 
         tableDDL += "[" + dt.Columns[i].ColumnName + "] " 
             + "NVarchar(max)"; 
        } 
        tableDDL += ")"; 

       SqlConnection myADONETConnection = new SqlConnection(); 
       myADONETConnection = (SqlConnection) 
       (Dts.Connections["Connection 
        Manager"].AcquireConnection(Dts.Transaction) as 
          SqlConnection); 
       SqlCommand myCommand = new SqlCommand(tableDDL, 
        myADONETConnection); 
       myCommand.ExecuteNonQuery(); 

       //Load the data from DataTable to SQL Server Table. 
       SqlBulkCopy blk = new SqlBulkCopy(myADONETConnection); 
       blk.DestinationTableName = "[" + filename +"]"; 
       blk.WriteToServer(dt); 
      } 
     } 

}

+0

こんにちは、上記のコードを使用してExcelファイルからデータを読み込み、これらのExcelファイルからテーブルを動的に作成しています。しかし、特にmyCommand.ExecuteNonQuery()でエラーメッセージが表示される。ライン。誰でも私を修正するための任意のオプションを提案してください.. – Deb

関連する問題