【问题标题】:Execute SQL query c#执行 SQL 查询 c#
【发布时间】:2017-07-27 09:27:56
【问题描述】:

这是代码:

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(); 有问题 有人可以帮助解决这个问题吗? 尝试不同的查询,但还是一样...

【问题讨论】:

  • 有什么异常?
  • have problem with cmd.ExecuteNonQuery()你遇到了什么问题?
  • ExecuteNonQuery() 用于更新、删除或插入。不适用于您的示例中的 SELECT。
  • 请在此处使用 ExecuteReader()。 ExecuteNonQuery() 用于插入、删除或更新记录。

标签: c# sql tsql


【解决方案1】:

问题出在你的班级SqlDbConnect。您有一个字段public SqlConnection conn,但在构造函数中您创建了一个SqlConnection 类型的新变量并打开它。在构造函数中,您需要使用 classes 字段:

    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();
    }

此外,如果要选择数据,则不能使用ExecuteNonQuery。相反,最好使用QueryEx() 方法,它会返回一个DataTable

con.SqlQuery("SELECT TOP 1000 [Name],[CompanyName],[Version] FROM[MicroinvestDatabasesCatalog].[dbo].[MicroinvestDatabases] ORDER BY NAME");
DataTable dt = con.QueryEx();

【讨论】:

  • 你能给我看一下代码吗?抱歉,我是新手,我还在学习。
  • 没问题。每个人都必须从某个地方开始!我已经更新了我的答案。第一个代码示例是 SqlDbConnect 类的更正版本,第二个使用您的查询并将结果存储在 DataTable 中。
  • 我很感激,但仍然有错误。也许我从 MainWindows.xaml.cs 的代码中忘记了这一行:private Connection con;
  • 能否给我看一下MainWindow.xaml.cs的完整代码?
  • 改成private SqlDbConnect con = new SqlDbConnect();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 2015-01-06
相关资源
最近更新 更多