Заполнить DataTable из базы данных SQL Server
Это для меня загадка, я знаю код, который я взял у других, в моем случае данные, которые он возвращает, пустые
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
Опробовал их все, когда я пытаюсь отобразить таблицу, сетка данных пуста, имеет правильное количество строк, но теперь значение
2 ответа
Если переменная 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;
}
Надеюсь, это полезно.