一尘不染

如何在C#中直接执行SQL查询?

c#

好的,我有一个完全符合我需要的旧批处理文件。但是,由于没有进行新的管理,我们无法再运行批处理文件,因此我需要使用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
我已经搜寻并接近了,但是从哪里开始我仍然茫然。


阅读 584

收藏
2020-05-19

共1个答案

一尘不染

若要直接从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();
    }
}
2020-05-19