2010-06-17 4 views
0

groupe,C# et de ligne de commande T-SQL Utilitaire

Partie 1: Je travaille actuellement sur une ligne de commande utilitaire qui peut prendre args et mettre à jour une base de données locale. Le seul problème que j'ai est une fois que j'ai établi une "connexion de données" .. comment puis-je utiliser ces arguments pour les requêtes et les recherches.

Par exemple: ~ // arrInput.exe "parm1" "pram2" "pram3"

Partie 2: Je voudrais prendre la ligne de commande args et les utiliser comme entrée parms pour un « stocké proc ". Une fois l'exécution terminée .... utilisé les mêmes entrées dans un fichier journal.

Par exemple le fichier de sortie:

mm-jj-aaaa hh: mm: ss - pram1, pram2, ...

pram1: mise à jour/

n'a pas

pram2: mise à jour/échec

Merci,

Tchad

+2

Quel code avez-vous obtenu à ce jour - pouvez-vous afficher? Quels problèmes avez-vous? – Oded

+3

Connaissez-vous l'utilitaire sqlcmd? http://msdn.microsoft.com/fr-fr/library/ms162773.aspx –

+2

Vous ne semblez pas avoir une question spécifique? – Blorgbeard

Répondre

2

Voici la fin SQL mince gs, en ce qui concerne la création d'un fichier de sortie, c'est assez basique, donc je laisse ce code à vous. Il existe d'autres options pour exécuter la requête, dépend de ce dont vous avez besoin dans votre implémentation.

Pouvez-vous être un peu plus précis dans ce que vous recherchez? Je vais ajouter le code pour faire un journal, je suppose et tout écrire.

éditer 2 Pour un fichier accdb, vous devrez utiliser une connexion OleDB et non une connexion SQL comme indiqué dans ce diagramme. J'ai modifié le code ci-dessous pour travailler avec un fichier accdb. Je ne suis pas aussi familier avec cela, donc je ne peux pas promettre que ça fonctionnera à 100% mais les seuls problèmes devraient être la syntaxe. D'ailleurs, aucune des entrées n'est aseptisée et il peut être préférable de paramétrer les entrées, mais comme il semble que vous l'exécutez vous-même, cela ne devrait pas être nécessaire. Si cela répond à vos questions s'il vous plaît marquer comme accepté :)

using System.Data.OleDB; 
using System.IO; 

static int Main(string[] args) 
{ 
    //Make a list to hold your params 
    List<string> paramList = new List<string>(); 

    //Populate the list based on args 
    for (int i = 0; i < args.Length(); i++) 
    { 
     paramList.Add(args[i]); 
    } 

    //Create a new oledb connection 
    string path = "c:\\yourfilepath\\file.accdb"; 
    OleDbConnection myConnection = 
     new SqlConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + 
     path + "';"); 
    myConnection.Open(); 

    //Run the stored proc on each param and output result to file 
    using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"filepath\filename")) 
    { 
     foreach (string param in paramList) 
     { 
      //myCommand.CommandText is the query you want to run against your database 
      //i.e. the stored proc 
      OleDbCommand myCommand = myConnection.CreateCommand(); 
      myCommand.CommandText = "stored_proc " + param; 
      OleDbDataReader myReader = myCommand.ExecuteReader(); 
      if (myReader.HasRows) 
      { 
       file.WriteLine("pass: " + param); 
      } 
      else 
      { 
       file.WriteLine("fail: " + param); 
      } 
      myReader.Close(); 
     } 
    } 

    myConnection.Close(); 
} 
+0

Merci pour l'édition ..... cela va ouvrir beaucoup plus de fonctionnalités à mon programme. –

+0

tout ce que j'ai à faire maintenant "je pense" ... est caisse un fichier journal approprié qui sort l'information je ne vais pas ..... –

+0

Dans l'instruction 'if' avec myCommand.ExecuteNonQuery() il écrit à un fichier qui va finir par ressembler à: passe: param1 passe: param2 échouent: param3 etc ... Si c'est pas ce que vous avez besoin, vous pouvez modifier les chaînes :) Si cela est une solution adaptée Voulez-vous le marquer comme accepté? : D – FlyingStreudel

Questions connexes