Maison > développement back-end > C++ > Comment puis-je exécuter un fichier de script .SQL avec plusieurs instructions en C# ?

Comment puis-je exécuter un fichier de script .SQL avec plusieurs instructions en C# ?

Patricia Arquette
Libérer: 2025-01-18 15:12:10
original
424 Les gens l'ont consulté

How Can I Execute an .SQL Script File with Multiple Statements in C#?

Exécuter le fichier de script .SQL en utilisant C#

En C#, l'exécution d'un fichier .SQL contenant plusieurs instructions nécessite une alternative à la méthode ExecuteNonQuery d'ODP.NET. Cet article décrit deux méthodes pour effectuer cette tâche.

Méthode 1 : Utiliser les objets de gestion SQL Server (SMO)

  1. Utilisez SqlConnection pour établir une connexion à la base de données.
  2. Initialisez l'objet Serveur à l'aide de la connexion.
  3. Utilisez Server.ConnectionContext.ExecuteNonQuery(script) pour exécuter le script.
<code class="language-csharp">using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
using System.IO;
using System.Data.SqlClient;

SqlConnection conn = new SqlConnection(sqlConnectionString);
Server server = new Server(new ServerConnection(conn));
string script = File.ReadAllText(@"path/to/script.sql");
server.ConnectionContext.ExecuteNonQuery(script);</code>
Copier après la connexion

*Méthode 2 : Générer un processus pour appeler SQLPlus**

  1. Créez un objet Process et définissez UseShellExecute sur false.
  2. Redirigez la sortie standard pour capturer les résultats.
  3. Définissez la propriété FileName sur "sqlplus".
  4. Définissez la propriété Arguments pour qu'elle contienne les informations d'identification de la base de données et le chemin du script.
  5. Définissez CreateNoWindow sur true pour masquer la fenêtre de la console.
  6. Si le processus renvoie le code de sortie 1, réessayez l'opération.
<code class="language-csharp">Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "sqlplus";
p.StartInfo.Arguments = string.Format("xx/xx@{0} @{1}", in_database, s);
p.StartInfo.CreateNoWindow = true;

bool started = p.Start();
while (p.HasExited == false)
{
    Application.DoEvents();
}

int exitCode = p.ExitCode;
if (exitCode != 0)
{
    ... // 错误处理
}</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal