これは私にとって謎です。他の人から取ったコードを知っています。私の場合、それが返すデータテーブルは空です
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;
}
EDIT 1
全体のポイントは、後でタブコントロールのデータグリッドビューでこのテーブルを表示することです。ここでの質問です tabcontrol C#で複数のデータテーブルを表示
ここでは、空のデータグリッドビューを表示しています
EDIT 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インジェクションに対して開かれているため、この種のコードには非常に注意してください。テーブル名がユーザー入力に由来しないことを願っています
以下を試してください:
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;
}
HopeIts参考になった。