连接此 SQL 查询

本文关键字:查询 SQL 连接 | 更新日期: 2023-09-27 18:30:46

我有这个sql查询

SqlCommand cmd = new SqlCommand("select distinct fld from client", con);

我可以使用变量将列名设置为

string str = "fld";
SqlCommand cmd = new SqlCommand("select distinct + str  + from client", con);

连接此 SQL 查询

string str = "fld";
SqlCommand cmd = new SqlCommand(string.Format("select distinct {0} from client", str), con);
最好

在此处使用 SQLCommand 参数,如 msdn 上所述。这是为了防止SQL注入。

例如:

 string commandText = "UPDATE Sales.Store SET Demographics = @demographics "
        + "WHERE CustomerID = @ID;";
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(commandText, connection);
        command.Parameters.Add("@ID", SqlDbType.Int);
        command.Parameters["@ID"].Value = customerID;
        // Use AddWithValue to assign Demographics. 
        // SQL Server will implicitly convert strings into XML.
        command.Parameters.AddWithValue("@demographics", demoXml);
        try
        {
            connection.Open();
            Int32 rowsAffected = command.ExecuteNonQuery();
            Console.WriteLine("RowsAffected: {0}", rowsAffected);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }

但是,对于所选的列,您仍必须使用动态 sql,如本答案中的@marc_s所述。

正如@marc_s描述他的解决方案:

var sqlCommandStatement = String.Format("select distinct {0} from client", "fld");

然后使用 SQL Server 中存储sp_executesql过程执行该 SQL 命令(并根据需要指定其他参数)。