возникли проблемы при загрузке данных в SqlServer 2008 из приложения Winforms - PullRequest
0 голосов
/ 21 июля 2011

Я передаю данные из CSV-файла и пытаюсь импортировать их в SQL Server 2008. Я посмотрел в Интернете и нашел такой подход, который не работает. Любые идеи о том, как сделать это лучше (в том смысле, что это действительно работает).

Входным параметром являются данные CSV в DataTable.

Вот код:

   private void ExportCSV(DataTable dtCSV)
     {
        DateTime dayOfYear = DateTime.Now.Date;
        dtCSV.TableName = "ActivationDate_"+dayOfYear.ToString();
        string createTempTable = "SELECT * INTO ThisActivation FROM @tvp";
        using (SqlDataAdapter adap = new SqlDataAdapter(createTempTable,GetConnection()))
        {
            adap.InsertCommand.Parameters.Add("@tvp", SqlDbType.NVarChar, int.MaxValue);
            adap.InsertCommand.Parameters["@tvp"].Value = dtCSV;
            adap.InsertCommand.ExecuteNonQuery();
        }
    }

1 Ответ

2 голосов
/ 21 июля 2011

Вы не можете параметризовать имена таблиц (или имена столбцов, в этом отношении).

Один из вариантов - вернуться к динамическому SQL , хотя при этом открывается SQL-инъекция .

Это будет работать, хотя вы должны быть очень осторожны при проверке dtCSV, чтобы избежать внедрения SQL.

string createTempTable = "SELECT * INTO ThisActivation FROM " + dtCSV;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...