скопировать файл в таблицу в postgresql с помощью драйвера C # npgsql и как получить один \ при использовании путей

1

Я пытаюсь скопировать текстовый файл с разделителями табуляции в postgresql в С# из диска E сервера.

Моя команда sql

NpgsqlCommand cmd = new NpgsqlCommand("COPY scrap (gl_post_date,stock_number,stock_description,reason_code,adjusted_qty,unit_cost,extended_cost,week,cost,catch_all) from" + FileName + ";", conn);

Вот мой код пути

string r = @"E:\";
            string t = txtFileName.Text;
            FileName = r + t;

Я проверяю свою переменную filename и возвращает путь с двойным обратным слэшем, мне нужно, чтобы он возвращал E:\file.txt

Что я делаю не так

благодаря

Теги:

1 ответ

1
Лучший ответ

В С# обратная косая черта в строке имеет особое значение, например \n - новая строка, \t - табуляция... и \\ - это обратная косая черта. Эти комбинации обратного слэша и символа называются escape-последовательностями. Однако в вашем примере вы использовали так называемый стенографический литерал verbatim. @в начале строки означает, что обратная косая черта в строке должна рассматриваться как любой другой символ (он отключает escape-последовательности). Другими словами, @"E:\" - это то же самое, что и "E:\\" и это нормально. Для получения дополнительной информации см. Также эту статью и этот вопрос.

Я также предлагаю использовать метод Path.Combine чтобы Path.Combine присоединиться к имени диска с именем файла.

  • 0
    Как поместить Path.Combine (r, t) в одинарные кавычки в операторе sql? Postgresql позволяет указывать путь только в одинарных кавычках 'E: \ file.txt, используя конструктор запросов pgadmin. Как я могу получить одинарные кавычки вокруг переменных в C # SQL операторов?
  • 0
    Вы пытались запустить этот код? Я думаю, что это должно работать, потому что, как я написал выше, \\ = \. Если это не работает, скажите мне, какая ошибка / исключение действительно сообщается.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню