Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Skrip SQL Besar dengan Perintah GO dalam C# Dengan Cekap?
Melaksanakan skrip SQL besar yang mengandungi arahan GO dalam C# dengan cekap dengan cekap
Soalan:
Menggunakan SqlCommand.ExecuteNonQuery()
untuk melaksanakan skrip SQL besar yang mengandungi berbilang kelompok yang dipisahkan oleh pernyataan GO adalah mencabar kerana ia mentafsir GO sebagai sintaks tidak sah.
Penyelesaian 1: Pemprosesan berbilang kelompok
Salah satu cara ialah membahagikan skrip SQL kepada kelompok individu berdasarkan baris GO dan melaksanakan setiap kelompok secara berasingan. Walaupun kaedah ini berfungsi, ia boleh membosankan dan terdedah kepada ralat untuk skrip yang besar.
Penyelesaian 2: Objek Pengurusan Pelayan SQL (SMO)
Penyelesaian yang lebih cekap ialah memanfaatkan Objek Pengurusan SQL Server (SMO), yang secara asli menyokong pembatas arahan GO.
Kod sampel:
<code class="language-csharp">public static void Main() { // SQL连接字符串 string sqlConnectionString = "Integrated Security=SSPI;" + "Persist Security Info=True;Initial Catalog=Northwind;Data Source=(local)"; // 从目录获取SQL脚本 DirectoryInfo di = new DirectoryInfo("c:\temp\sqltest\"); FileInfo[] rgFiles = di.GetFiles("*.sql"); // 使用SMO执行每个脚本 foreach (FileInfo fi in rgFiles) { string script = File.ReadAllText(fi.FullName); using (SqlConnection connection = new SqlConnection(sqlConnectionString)) { Server server = new Server(new ServerConnection(connection)); server.ConnectionContext.ExecuteNonQuery(script); } } }</code>
Pustaka tambahan:
Pilihan lain ialah menggunakan perpustakaan Phil Haack, yang merangkumi fungsi melaksanakan skrip SQL menggunakan pembatas GO: https://www.php.cn/link/3cdad14c5d7c1e1fa307772a876b42d7
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Skrip SQL Besar dengan Perintah GO dalam C# Dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!