好的,我有一个旧的批处理文件,它正是我需要的.然而,由于没有新的管理,我们无法再运行批处理文件,所以我需要用C#启动.

我正在使用Visual Studio C#,并且已经为我需要构建的应用程序设置了表单.(我边走边学)

以下是我在C#中需要完成的内容(这是批处理的勇气)

sqlcmd.exe -S .\PDATA_SQLEXPRESS -U sa -P 2BeChanged! -d PDATA_SQLEXPRESS  -s ; -W -w 100 -Q "SELECT tPatCulIntPatIDPk, tPatSFirstname, tPatSName, tPatDBirthday  FROM  [dbo].[TPatientRaw] WHERE tPatSName = '%name%' "

基本上,它将SQLCMD.exe与已有的名为PDATA_SQLExpress的数据源一起使用.
我已经找了又接近了,但我还是不知道从哪里开始.

推荐答案

要在C#中直接执行命令,您可以使用SqlCommand类.

使用参数化SQL(以避免注入攻击)的快速示例代码可能如下所示:

string queryString = "SELECT tPatCulIntPatIDPk, tPatSFirstname, tPatSName, tPatDBirthday  FROM  [dbo].[TPatientRaw] WHERE tPatSName = @tPatSName";
string connectionString = "Server=.\PDATA_SQLEXPRESS;Database=;User Id=sa;Password=2BeChanged!;";

using (SqlConnection connection = new SqlConnection(connectionString))
{
    SqlCommand command = new SqlCommand(queryString, connection);
    command.Parameters.AddWithValue("@tPatSName", "Your-Parm-Value");
    connection.Open();
    SqlDataReader reader = command.ExecuteReader();
    try
    {
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}, {1}",
            reader["tPatCulIntPatIDPk"], reader["tPatSFirstname"]));// etc
        }
    }
    finally
    {
        // Always call Close when done reading.
        reader.Close();
    }
}

.net相关问答推荐

如何在AutoMapper中添加自定义方法到项目中?

线程安全性的单元测试?

C# 中的批量更新

编译时禁用 Dll 文化文件夹

extern 在 C# 中是如何工作的?

大型 WCF Web 服务请求因 (400) HTTP 错误请求而失败

[DllImport("QCall")] 是什么?

如何在 C# 7 中返回多个值?

静态析构函数

所有数组在 C# 中都实现了哪些接口?

在同一解决方案中引用 2 个不同版本的 log4net

如何对 LINQ to XML 中的元素进行深层复制?

Visual Studio 2017 和 2019 突出显示滚动条中所选单词的出现

使用 XmlDocument 读取 XML 属性

ToLowerInvariant() 有什么问题?

如何比较泛型类型的值?

ValueTypes 如何从 Object (ReferenceType) 派生并且仍然是 ValueTypes?

是 C# 中的 bool 读/写原子

C# 应用程序中的资源和嵌入式资源有什么区别?

检测到包降级警告(dotnet core,vs 2017)