Je suis sûr que cette question a déjà reçu une réponse, mais je n'ai pas trouvé de réponse en utilisant l'outil de recherche.
En utilisant C#, je voudrais exécuter un fichier .sql. Ce fichier contient plusieurs instructions sql, dont certaines sont réparties sur plusieurs lignes. J'ai essayé de lire le fichier et d'exécuter le fichier à l'aide d'ODP.NET ... mais je ne pense pas que ExecuteNonQuery soit vraiment conçu pour cela.
J'ai donc essayé d'utiliser sqlplus en créant un processus ... mais à moins que je ne crée le processus avec UseShellExecute réglé sur true, sqlplus se bloque et ne sort jamais. Voici le code qui ne fonctionne pas.
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();
p.WaitForExit();
WaitForExit ne renvoie jamais .... Sauf si je règle UseShellExecute sur true. Un effet secondaire de UseShellExecute est que vous ne pouvez pas capturer la sortie redirigée.
9 votes
Bonjour M. Rich, votre question concernait Oracle et vous avez accepté une solution qui était pour sql server ? Vous avez changé votre DB pour sql server ?