C# 执行SQL查询c

C# 执行SQL查询c,c#,sql,tsql,C#,Sql,Tsql,代码如下: con.SqlQuery(" SELECT TOP 1000 [Name],[CompanyName],[Version] FROM[MicroinvestDatabasesCatalog].[dbo].[MicroinvestDatabases] ORDER BY NAME"); con.NonQueryEx(); 以及用于连接和查询的类: public SqlConnection conn; public SqlCommand

代码如下:

con.SqlQuery(" SELECT TOP 1000 [Name],[CompanyName],[Version] FROM[MicroinvestDatabasesCatalog].[dbo].[MicroinvestDatabases] ORDER BY NAME");
                con.NonQueryEx();
以及用于连接和查询的类:

  public SqlConnection conn;
        public SqlCommand cmd;
        public SqlDataAdapter da;
        public DataTable dt;
        public DataSet ds;

        public void SqlDbConnect()
        {
            SqlConnection conn = new SqlConnection($"Data Source={server};User ID={user};Password={password};");
            conn.Open();

        }

        public void SqlQuery(string queryText)
        {
            cmd = new SqlCommand(queryText, conn);
        }

        public DataTable QueryEx()
        {
            da = new SqlDataAdapter(cmd);
            dt = new DataTable();
            da.Fill(dt);
            return dt;
        }
        public void NonQueryEx()
        {

            cmd.ExecuteNonQuery();

        }
但cmd.ExecuteNonQuery有问题; 有人能帮忙解决这个问题吗? 尝试不同的查询,但仍然是相同的…

问题在您的类SqlDbConnect中。您有一个字段public SqlConnection conn,但在构造函数中创建了一个类型为SqlConnection的新变量,并将其打开。在构造函数中,需要使用“类”字段:

    public SqlConnection conn;
    public SqlCommand cmd;
    public SqlDataAdapter da;
    public DataTable dt;
    public DataSet ds;

    public void SqlDbConnect()
    {
        conn = new SqlConnection($"Data Source={server};User ID={user};Password={password};");
        conn.Open();
    }

    public void SqlQuery(string queryText)
    {
        cmd = new SqlCommand(queryText, conn);
    }

    public DataTable QueryEx()
    {
        da = new SqlDataAdapter(cmd);
        dt = new DataTable();
        da.Fill(dt);
        return dt;
    }
    public void NonQueryEx()
    {
        cmd.ExecuteNonQuery();
    }
此外,如果要选择数据,则不能使用ExecuteOnQuery。相反,最好使用QueryEx方法,该方法返回一个DataTable:


例外情况是什么?cmd.ExecuteNonQuery有问题您有什么问题?ExecuteNonQuery用于更新、删除或插入。不适用于示例中的SELECT。请在此处使用ExecuteReader。ExecuteOnQuery用于插入、删除或更新记录。你能给我看一下代码吗?对不起,我是新来的,我还在学习。没问题。每个人都必须从某个地方开始!我已经更新了我的答案。第一个代码示例是类SqlDbConnect的更正版本,第二个使用您的查询并将结果存储在数据表中。也许我忘记了MainWindows.xaml.cs中代码中的这一行:private Connection con;你能给我看看MainWindow.xaml.cs的完整代码吗?把它改成私有的SqlDbConnect con=newsqldbconnect;
con.SqlQuery("SELECT TOP 1000 [Name],[CompanyName],[Version] FROM[MicroinvestDatabasesCatalog].[dbo].[MicroinvestDatabases] ORDER BY NAME");
DataTable dt = con.QueryEx();