Rumah > pembangunan bahagian belakang > C++ > Bagaimana cara lulus parameter nilai jadual dengan cekap ke prosedur tersimpan SQL Server dari .NET?

Bagaimana cara lulus parameter nilai jadual dengan cekap ke prosedur tersimpan SQL Server dari .NET?

Linda Hamilton
Lepaskan: 2025-01-31 00:21:08
asal
317 orang telah melayarinya

How to Efficiently Pass Table Value Parameters to SQL Server Stored Procedures from .NET?

.NET ke SQL Server: Mengoptimumkan Parameter Jadual Prosedur Tertahan

Memindahkan pangkalan data ke SQL Server 2008 sering memerlukan memanfaatkan parameter bernilai jadual dalam prosedur yang disimpan untuk pemindahan data yang cekap. Pendekatan ini meningkatkan prestasi berbanding kaedah yang lebih lama seperti rentetan yang dipisahkan koma, yang kini dianggap ketinggalan zaman.

Artikel ini menunjukkan cara lulus data secara berkesan ke prosedur yang disimpan menggunakan

, DataTable, atau DbDataReader dalam kod .NET anda. Contoh berikut mempamerkan penggunaan IEnumerable<SqlDataRecord> dan DataTable: IEnumerable<SqlDataRecord>

<code class="language-csharp">using System.Data;
using System.Data.SqlClient;

public class StoredProcedureParameters
{
    public static void ExecuteProcedure(bool useDataTable, string connectionString, IEnumerable<long> ids)
    {
        using (var connection = new SqlConnection(connectionString))
        {
            connection.Open();
            using (var command = connection.CreateCommand())
            {
                command.CommandText = "dbo.procMergePageView";
                command.CommandType = CommandType.StoredProcedure;

                SqlParameter parameter;
                if (useDataTable)
                {
                    parameter = command.Parameters.AddWithValue("@Display", CreateDataTable(ids));
                }
                else
                {
                    parameter = command.Parameters.AddWithValue("@Display", CreateSqlDataRecords(ids));
                }
                parameter.SqlDbType = SqlDbType.Structured;
                parameter.TypeName = "dbo.PageViewTableType";

                command.ExecuteNonQuery();
            }
        }
    }

    private static DataTable CreateDataTable(IEnumerable<long> ids)
    {
        var table = new DataTable();
        table.Columns.Add("ID", typeof(long));
        foreach (var id in ids)
        {
            table.Rows.Add(id);
        }
        return table;
    }

    private static IEnumerable<SqlDataRecord> CreateSqlDataRecords(IEnumerable<long> ids)
    {
        var metaData = new SqlMetaData[1];
        metaData[0] = new SqlMetaData("ID", SqlDbType.BigInt);
        var record = new SqlDataRecord(metaData);
        foreach (var id in ids)
        {
            record.SetInt64(0, id);
            yield return record;
        }
    }
}</code>
Salin selepas log masuk
dengan menetapkan

ke SqlDbType dan pemetaan Structured ke jenis jadual yang sepadan yang ditakrifkan dalam prosedur tersimpan anda (TypeName dalam contoh ini), anda memastikan penghantaran data yang lancar dan dioptimumkan. Kaedah ini menjamin komunikasi yang cekap dan boleh dipercayai antara aplikasi .NET anda dan prosedur tersimpan SQL Server. dbo.PageViewTableType

Atas ialah kandungan terperinci Bagaimana cara lulus parameter nilai jadual dengan cekap ke prosedur tersimpan SQL Server dari .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan