从SQL Server数据库填充DataTable

这个对我来说是一个谜,我知道我从其他人那里得到的代码,在我的例子中,它返回的数据表是空的

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的数据网格视图中显示此表,这里是在tabcontrol C#中显示多个数据表的问题

这里只显示一个空白的数据网格视图

编辑2
尝试了所有这些,当我尝试显示表时,datagridview为空,具有适当数量的行但现在值

如果变量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 Injection是开放的。 我希望你的表名不是来自用户输入

试试以下内容:

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

希望有用。