Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Adicionando várias variáveis ​​parametrizadas a um banco de dados em c#


Como você está usando c# e sql server 2008 , você pode usar um parâmetro com valor de tabela para inserir várias linhas em seu banco de dados. Aqui está uma breve descrição de como fazer isso:

Primeiro, você precisa criar um tipo de tabela definido pelo usuário:
CREATE TYPE MyTableType AS TABLE
(
    Col1 int,
    Col2 varchar(20) 
)
GO

Em seguida, você precisa criar um procedimento armazenado que aceitará esse tipo de tabela como parâmetro
CREATE PROCEDURE MyProcedure
(
    @MyTable dbo.MyTableType READONLY -- NOTE: table valued parameters must be Readonly!
)
AS

INSERT INTO MyTable (Col1, Col2)
SELECT Col1, Col2 
FROM @MyTable

GO

Finalmente, execute este procedimento armazenado do seu código c#:
DataTable dt = new DataTable();
dt.Columns.Add("Col1", typeof(int));
dt.Columns.Add("Col2", typeof(string));

// Fill your data table here

using (var con = new SqlConnection("ConnectionString"))
{
    using(var cmd = new SqlCommand("MyProcedure", con))
    {
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@MyTable", SqlDbType.Structured).Value = dt;
        con.Open();
        cmd.ExecuteNonQuery();
    }
}