Утилита командной строки C # и T-SQL - PullRequest
0 голосов
/ 17 июня 2010

Group,

Часть 1. В настоящее время я работаю над утилитой командной строки, которая может принимать аргументы и обновлять локальную базу данных.Единственная проблема, с которой я столкнулся - это когда я установил «соединение данных» ... как я могу использовать эти аргументы для запросов и поисков.

Например: ~ // arrInput.exe "parm1" "pram2" "pram3"

Часть 2: Я хотел бы взять аргументы командной строки и использовать их в качестве входных параметров для"сохраненный процесс".После завершения выполнения .... использовались те же входные данные, что и файл журнала.

Например, выходной файл:

мм-дд-гггг чч: мм: сс - pram1, pram2, ...

pram1: обновлено / не удалось

pram2: обновлено / не удалось

Спасибо,

Чад

1 Ответ

2 голосов
/ 17 июня 2010

Вот конец SQL, что касается создания выходного файла, это довольно просто, так что я оставлю этот код на ваше усмотрение. Существуют и другие варианты выполнения запроса, в зависимости от того, что вам нужно в вашей реализации.

edit Можете ли вы быть более конкретным в том, что вы ищете? Я добавлю код для создания журнала, я полагаю, и выписать все.

edit 2 Для файла accdb вам нужно будет использовать соединение OleDB, а не соединение SQL, как показано на этой диаграмме. Я отредактировал приведенный ниже код для работы с файлом accdb. Я не настолько знаком с этим, поэтому не могу обещать, что он будет работать на 100%, но единственными проблемами должен быть синтаксис. Кстати, ни один из входов не подвергается дезинфекции, и может быть лучше параметризовать входы, но так как это звучит так, как будто вы выполняете это самостоятельно, в этом нет необходимости. Если это отвечает на ваши вопросы, пожалуйста, отметьте как принятый :)

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();
}
...