C# 执行任何原始SQL查询

C# 执行任何原始SQL查询,c#,sql,C#,Sql,是否可以执行任意类型的原始SQL命令SELECT、UPDATE、DELETE。。。。在C中,我希望添加一个类似于SQLServerManagementStudio查询窗口的功能,在该窗口中,我可以键入任何SQL命令并执行它。在我的例子中,我并不担心sql注入,我知道这个特性会带来这种风险。所有连接参数都传递给我,我有一个有效的连接字符串,但我对数据库本身一无所知。在我获得该命令之前,SQL命令的语法也是正确的。我似乎无法找到一个在所有情况下都有效的解决方案,可能只是忽略了显而易见的解决方案 下面

是否可以执行任意类型的原始SQL命令SELECT、UPDATE、DELETE。。。。在C中,我希望添加一个类似于SQLServerManagementStudio查询窗口的功能,在该窗口中,我可以键入任何SQL命令并执行它。在我的例子中,我并不担心sql注入,我知道这个特性会带来这种风险。所有连接参数都传递给我,我有一个有效的连接字符串,但我对数据库本身一无所知。在我获得该命令之前,SQL命令的语法也是正确的。我似乎无法找到一个在所有情况下都有效的解决方案,可能只是忽略了显而易见的解决方案

下面是一个ADO示例

using System;
using System.Data;
using System.Data.SqlClient;

class Program
{
static void Main()
{
    string connectionString =
        "Data Source=(local);Initial Catalog=Northwind;"
        + "Integrated Security=true";

    // Provide the query string with a parameter placeholder. 
    string queryString =
        "UPDATE [dbo].[USR_Users] SET [Active] = 1 WHERE Id = 1";


    using (SqlConnection connection =
        new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);


        try
        {
            connection.Open();
            command.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        Console.ReadLine();
    }
}

您可以简单地使用ADO.NET并显示查询结果(如果查询执行成功与否),在执行查询时,只需将以下代码放入事件处理程序:

using (SqlConnection conn = ConnectionClass.GetInstance().Connection())
using (SqlCommand cmd = new SqlCommand(TextBoxQuery.Text, conn))
{
    conn.Open();
    TextBoxNoOfRowEffected.Text = cmd.ExecuteNonQuery().ToString();
}

即使用户执行select语句,这种方法也有效吗?我的意思是我真的只想使用一个查询字符串,而不必添加参数。我得到的消息是这样的:UPDATE[dbo].[USR_Users]SET[Active]=1,其中Id=1+Syed Farjad Zia Zaidi,+Gary Walker,此示例来自microsoft网站,仅作为示例提供,而不是用于生产的代码。不过我同意,因为sqlcommand实现了IDisPossible接口,所以它可以用作using语句的一部分,但这确实超出了最初的问题,我不想要结果,我只想运行查询。我不会把结果传回去。这是更新、删除和添加条件的详细说明。我认为不会有任何Select语句传递给我。当然有可能。我已经编辑了你的标题。请看,如果共识是否定的,他们就不应该这样做。我建议使用简洁的方式: