Заполнить 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;
    }

Надеюсь, это полезно.

Другие вопросы по тегам