从SQL Server数据库中填充DataTable

本文关键字:填充 DataTable 数据库 SQL Server | 更新日期: 2023-09-27 18:17:06

这对我来说是一个谜,我知道我从别人那里拿的代码,在我的情况下,它返回的数据表是空的

conSTR是连接字符串,设置为全局字符串

public DataTable fillDataTable(string table)
    {
        string query = "SELECT * FROM dstut.dbo." +table;
        SqlConnection sqlConn = new SqlConnection(conSTR);
        sqlConn.Open();
        SqlCommand cmd = new SqlCommand(query, sqlConn);
        DataTable dt = new DataTable();
        dt.Load(cmd.ExecuteReader());
        sqlConn.Close();
        return dt;
    }

编辑1
重点是稍后在tabcontrol上的数据网格视图中显示这个表,这是关于这个的问题在tab控件中显示多个数据表

这里显示的是空白的datagridview

编辑2
当我尝试显示表格时,datagridview是空的,有适量的行,但现在值

从SQL Server数据库中填充DataTable

如果变量table包含无效字符(如空格),则应该在变量周围添加方括号。

public DataTable fillDataTable(string table)
{
    string query = "SELECT * FROM dstut.dbo.[" + table + "]";
    using(SqlConnection sqlConn = new SqlConnection(conSTR))
    using(SqlCommand cmd = new SqlCommand(query, sqlConn))
    {
        sqlConn.Open();
        DataTable dt = new DataTable();
        dt.Load(cmd.ExecuteReader());
        return dt;
    }
}
顺便说一下,要非常小心这种代码,因为它对Sql注入是开放的。我希望表名不是来自用户输入

尝试如下:

public DataTable fillDataTable(string table)
    {
        string query = "SELECT * FROM dstut.dbo." +table;
        SqlConnection sqlConn = new SqlConnection(conSTR);
        sqlConn.Open();
        SqlCommand cmd = new SqlCommand(query, sqlConn);
        SqlDataAdapter da=new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        da.Fill(dt);
        sqlConn.Close();
        return dt;
    }

希望对大家有帮助