【问题标题】:Show sql query result Asp.net显示 sql 查询结果 Asp.net
【发布时间】:2026-02-19 10:10:01
【问题描述】:

我的SQL有问题,我真的不知道它出了什么问题。我正在做类似 phpmyadmin 但在 asp.net 中的网页。问题在于获取查询结果。我有一个文本框,您可以在其中放置您的 sql 代码,然后单击按钮执行代码。一切正常,但我也希望看到一些代码的结果,尤其是使用 SELECT 时。我尝试了一个代码,但它似乎不起作用。请帮忙。

                DataTable dt = new DataTable();
                using (SqlConnection con = povezava)
                {
                    using (SqlCommand command = con.CreateCommand())
                    {
                        command.CommandText = tb_koda.Text;
                        con.Open();
                        using (SqlDataReader dr = command.ExecuteReader())
                        {
                            dt.Load(dr);
                        }
                    }
                }

这是我写的代码,但没有返回任何结果。

【问题讨论】:

  • 嗯,此时您可能已经将数据保存在DataTable对象中,现在您只需要对其进行操作(除非您对其进行操作,否则它不会显示在页面中)
  • 当您通过代码并使用Data Visualizer 时,您是否看到填充了任何数据行..?如果是这样,那么如果您希望在 DataGrid 中看到数据..那么您需要将数据网格绑定到 dt 并调用 DataGridView 的 DataBind 方法..请解释您希望如何看到这些数据..也允许用户通过文本框将查询传递给数据库并不是一件好事。您是否熟悉SQL Injection 以及关于未执行查询的 SQL Server 特殊字符...??
  • 是的,事实上我用过这个,但是没有数据被填充,这让我很困扰。
  • 您可能想查找 sql injection...这种方法是开放的。 xkcd.com/327

标签: c# mysql asp.net sql-server


【解决方案1】:

DataTable 是一个内存对象;它与屏幕上的任何内容都无关。您需要将DataTable 的内容提取到TextBox 中,尽管将其绑定到例如GridView 可能会产生更友好的结果。

也要注意 SQL 注入建议!

【讨论】:

    【解决方案2】:

    你可以试试这个。

    using (SqlConnection con = povezava) 
    {
    using (SqlCommand command = con.CreateCommand()) 
    {
        command.CommandText = tb_koda.Text;
        command.Connection = con;
        con.Open();
        using (SqlDataAdapter adapter = new SqlDataAdapter(command)) 
        {
            DataSet ds = new DataSet();
            da.Fill(ds);
            yourDataGrid.DataSource = ds.Tables[0];
            yourDataGrid.DataBind();
        }
        con.Close();
    }
    }
    

    【讨论】:

      【解决方案3】:

      请尝试

      DataTable dt = new DataTable();
      using (SqlConnection con = povezava) {
          using (SqlCommand command = con.CreateCommand()) {
              command.CommandText = tb_koda.Text;
              con.Open();
              using (SqlDataAdapter adapter = new SqlDataAdapter(command)) 
                  adapter.Fill(dt);
          }
      }
      

      【讨论】: