C#和T-SQL命令行实用程序

时间:2010-06-17 18:42:05

标签: c# tsql command-line command-line-arguments

组,

第1部分: 我目前正在开发一个命令行实用程序,它可以获取args并更新本地数据库。我唯一的问题是,一旦我建立了“数据连接”..我如何使用这些args进行查询和搜索。

例如: 〜// arrInput.exe“parm1”“pram2”“pram3”

第2部分: 我想接受命令行参数并将它们用作“存储过程”的输入参数。一旦完成执行....使用相同的输入包装日志文件。

例如输出文件:

mm-dd-yyyy hh:mm:ss - pram1,pram2,...

pram1:更新/失败

pram2:更新/失败

谢谢,

乍得

1 个答案:

答案 0 :(得分:2)

这是SQL的结束,就制作输出文件而言,这非常基本,所以我会把这些代码留给你。执行查询还有其他选项,具体取决于您在实现中需要的内容。

编辑您可以更具体地了解您的需求吗?我会假设添加用于创建日志的代码并写出所有内容。

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