2010-08-23 9 views
0

J'ai deux scripts à exécuter sur ma base de données. J'ai donc quelques questions. J'utilise simplement Connection, CommandText, CommandType et CommandTimeout lorsque j'ouvre une connexion à la base de données.Créer des tableaux à l'aide d'un script et comment exécuter le script

Première question - Est-ce que quelqu'un sait si, grâce à cette méthode, je peux créer des tables permantentes, pas des tables temporaires?

Deuxièmement - Comment est-ce que j'exécuterais ce dossier? Pourrais-je simplement définir le fichier comme paramètre, et dans la requête exécuter le paramètre?

Merci

Répondre

0

Vous pouvez faire n'importe quoi dans une connexion .NET SQL que vous pourriez faire dans un script SQL. En ce qui concerne "l'exécution d'un fichier", vous devez charger le texte du fichier en mémoire et exécuter le texte chargé en tant que commande unique.

Nous faisons quelque chose de similaire dans notre application. Nos scripts de base de données sont stockés dans des scripts SQL. Nous chargeons chaque fichier séquentiellement du disque dans la mémoire et l'exécutons.

+0

Comment charger le texte en mémoire, quelque chose comme 'using (StreamReader sr - New StreamReader (" fileName "))' – Vibralux

+0

Exactement. Ou utilisez File.ReadAllLines(). Lisez le fichier entièrement, puis exécutez le texte. Pour être agréable à d'autres applications, ouvrez un FileStream avec FileAccess.read et FileShare.Read, puis ouvrez un StreamReader sur le FileStream. –

0

En C# -

  1. Vous pouvez créer des tables permanentes et temporaires ainsi.

  2. Exécutez le script en tant que CommandText d'un objet de commande.

+0

Merci pour cette réponse, dire que je dois continuer à mettre à jour le fichier, alors je le fichier comme un lien au lieu d'un fichier réel, est-ce que je pourrais simplement passer en revue un paramètre ou y a-t-il un autre moyen? – Vibralux

0

Exemple A partir de MSDN: Comment définir les paramètres dans la requête,

private static void UpdateDemographics(Int32 customerID, 
    string demoXml, string connectionString) 
{ 

    string commandText = "UPDATE Sales.Store SET Demographics = @demographics " 
     + "WHERE CustomerID = @ID;"; 

    using (SqlConnection connection = new SqlConnection(connectionString)) 
    { 
     SqlCommand command = new SqlCommand(commandText, connection); 
     command.Parameters.Add("@ID", SqlDbType.Int); 
     command.Parameters["@ID"].Value = customerID; 

     command.Parameters.AddWithValue("@demographics", demoXml); 

     try 
     { 
      connection.Open(); 
      Int32 rowsAffected = command.ExecuteNonQuery(); 
      Console.WriteLine("RowsAffected: {0}", rowsAffected); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 
    } 
}