Création d’une procédure stockée via C #

J’essaie de créer une firebase database de départ dans mon application Web, et j’ai pu créer la firebase database, remplir les tables, je ne peux que faire en sorte que les procédures stockées fonctionnent. Voici ce que j’ai eu jusqu’à présent, mais obtenir CREATE / ALTER PROCEDURE ‘doit être la première déclaration d’un lot de requêtes. \ R \ nLa syntaxe incorrecte près de’ GO ‘. J’ai aussi essayé de supprimer les GO et d’append \ r \ n entre l’instruction USE et la procédure de création sans succès. Toute aide serait appréciée.

SsortingngBuilder sbSP = new SsortingngBuilder(); sbSP.AppendLine("USE [" + txtDBName.Text + "]"); sbSP.AppendLine("GO"); sbSP.AppendLine("CREATE PROCEDURE [spInsertADAuthorization] @AD_Account varchar(255),@AD_SID varchar(255),@AD_EmailAddress varchar(255),@DateImported datetime,@Active bit AS BEGIN SET NOCOUNT ON; INSERT INTO AD_Authorization (AD_Account, AD_SID, AD_EmailAddress, DateImported, Active) VALUES (@AD_Account,@AD_SID,@AD_EmailAddress,@DateImported,@Active) END"); sbSP.AppendLine("GO"); using (SqlConnection connection = new SqlConnection(ConnectionSsortingng)) { using (SqlCommand cmd = new SqlCommand(sbSP.ToSsortingng(), connection)) { connection.Open(); cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery(); connection.Close(); } } 

“GO” est un séparateur de lot. Ce n’est pas une instruction T-SQL. Supprimez les lignes “USE” et “GO” et réessayez.

Comme d’autres l’ont mentionné, la commande “GO” est simplement un séparateur de lot interprété par SSMS. Ce que vous voulez faire est de créer la procédure stockée comme suit:

 ssortingng sql = ssortingng.Format("CREATE PROCEDURE [{0}]..[spInsertADAuthorization] @AD_Account varchar(255),@AD_SID varchar(255),@AD_EmailAddress varchar(255),@DateImported datetime,@Active bit AS BEGIN SET NOCOUNT ON; INSERT INTO AD_Authorization (AD_Account, AD_SID, AD_EmailAddress, DateImported, Active) VALUES (@AD_Account,@AD_SID,@AD_EmailAddress,@DateImported,@Active) END", txtDBName.Text); using (SqlConnection connection = new SqlConnection(ConnectionSsortingng)) { using (SqlCommand cmd = new SqlCommand(sql, connection)) { connection.Open(); cmd.CommandType = CommandType.Text; cmd.ExecuteNonQuery(); connection.Close(); } } 

Au lieu d’utiliser ‘USE [DataBase] Go’, vous pouvez définir ou modifier très facilement la firebase database actuelle pour un SqlConnection ouvert:

 connection.ChangeDatabase("YourDB"); 

Un exemple:

 private static void ConctDatabase(ssortingng connectionSsortingng) { using (SqlConnection conn = new SqlConnection(connectionSsortingng)) { conn.Open(); MessageBox.Show("Database: {0}", conn.Database); conn.ChangeDatabase("Northwind"); MessageBox.Show("Database: {0}", conn.Database); } } 

Si vous envisagez de créer une firebase database et de conserver des versions dans votre code, vous voudrez peut-être envisager d’utiliser quelque chose comme l’ infrastructure Migrator au lieu d’écrire manuellement tout ce code SQL.