2012-09-07 9 views
12

Ho un datatable creato in C#.Passa datatable ad una stored procedure

using (DataTable dt = new DataTable()) 
{ 
    dt.Columns.Add("MetricId", typeof(int)); 
    dt.Columns.Add("Descr", typeof(string)); 
    dt.Columns.Add("EntryDE", typeof(int)); 
    foreach (DataGridViewRow row in dgv.Rows) 
    { 
     dt.Rows.Add(row.Cells[1].Value, row.Cells[2].Value, row.Cells[0].Value); 
    } 

    // TODO: pass dt 
} 

E ho una stored procedure

CREATE PROCEDURE [dbo].[Admin_Fill] 
-- Add the parameters for the stored procedure here 
@MetricId INT, 
@Descr VARCHAR(100), 
@EntryDE VARCHAR(20) 

Quello che voglio è quello di passare il datatable a questa stored procedure, come?

risposta

13

è possibile utilizzare una tabella di parametri con valori come di SQL Server 2008/.NET 3.5 ....

Partenza the guide on MSDN

Inoltre, come ci sono altre opzioni disponibili, ho un comparisonof 3 approcci di passaggio di più valori (campo singolo) a uno sproc (TVP vs XML vs CSV)

+0

devo creare un tipo di tavolo e definire la struct ure in SQL Server? –

+1

Sì, è necessario creare un nuovo tipo di tabella – AdaTheDev

0

Generalmente si spruzzano i dati in documenti XML e si passano i dati al database come parametro NTEXT.

8
  1. è necessario definire un tipo di tabella che si desidera passare a definiti dall'utente Tipi di tabelle nel database.

  2. allora avete bisogno di aggiungere il parametro nella stored procedure di passare in questo modo:

    @YourCustomTable AS [dbo].YourCustomTable Readonly, 
    
  3. Poi, quando si ha la configurazione righe, chiamare in questo modo:

    // Setup SP and Parameters 
    command.CommandText = "YOUR STORED PROC NAME"; 
    command.Parameters.Clear(); 
    command.CommandType = CommandType.StoredProcedure; 
    command.Parameters.AddWithValue("@someIdForParameter", someId); 
    command.Parameters.AddWithValue("@YourCustomTable",dtCustomerFields).SqlDbType = SqlDbType.Structured; 
    
    //Execute 
    command.ExecuteNonQuery(); 
    

Questo dovrebbe risolvere il problema

+0

Esatto, se si creano tipi di parametri con valori di tabella come @AdaTheDev collegato. es .: CREATE TYPE dbo.CategoryTableType COME TABELLA (ID categoria int, CategoriaName nvarchar (50)) –

Problemi correlati