Сохранение команд принтера для последующей передачи

Я создаю квитанцию, которая отправляется на принтер квитанции через ESC / Pos. Если позже мне понадобится распечатать копию этой квитанции, мне нужно сохранить команды esc / pos в базе данных. Здесь начинается моя проблема, потому что я не могу найти правильный тип данных для хранения квитанции.

Как вы храните копии квитанций? Струны? Варбинарыс? Что-нибудь еще?

ОБНОВЛЕНИЕ: мне очень жаль. Я написал быстрый пример того, как работает ESC / Pos.

        Encoding enc = Encoding.ASCII;

        string text = string.Empty;
        text += Convert.ToChar(27) + "@"; 
        text += Convert.ToChar(27) + "R" + Convert.ToChar(9);
        text += Convert.ToChar(27) + "t" + Convert.ToChar(5);

        for (int i = 255; i < 300; i++)
        {
            text += i + " " + Convert.ToChar(i) + Environment.NewLine;
        }
        for (int i = 0; i < 4; i++)
            text += Environment.NewLine;
        text += Convert.ToChar(29) + "V" + Convert.ToChar(65) + Convert.ToChar(0);
        clientSock.Send(enc.GetBytes(text.ToCharArray()));

Это то, что я хочу сохранить. Я не хочу сохранять только содержимое в текстовой переменной, так как я потеряю формат, который может быть включен в содержимое. Я использую Microsoft SQL Server (T-SQL).


person DaveL    schedule 11.06.2014    source источник
comment
Не будучи знакомы с этим (как я подозреваю и другие), можете ли вы опубликовать некоторые детали, такие как [a] образец данных [b], какой сервер базы данных вы используете   -  person Burhan Khalid    schedule 11.06.2014
comment
Ну конечно; естественно! Извините, что не включил его раньше. Я обновил вопрос сейчас.   -  person DaveL    schedule 11.06.2014


Ответы (1)


Похоже, вам нужно сохранить хотя бы некоторые непечатаемые символы, поэтому вы не хотите использовать строки / varchar. Кроме того, varbinary ограничен 254 байтами, поэтому вам, вероятно, лучше использовать blob.

Кроме того, просто к сведению, вам следует подумать об использовании StringBuilder вместо выполнения всей конкатенации строк. Будет намного быстрее.

person Mark Wagoner    schedule 11.06.2014
comment
Большое спасибо за ответ! Я искал BLOB среди типов данных, но его там не было. Вы можете придумать альтернативу? Кроме того, спасибо за сообщение о конкатенации! - person DaveL; 11.06.2014
comment
На самом деле я еще немного погуглил и, похоже, оговорился. Документы немного сбивают с толку, но я думаю, что переменная varbinary (в T-SQL) ограничена 254 байтами. В соответствии с этим msdn размер столбца varbinary может составлять до 2 ^ 31-1 байтов. microsoft.com/en-us/library/ms188362.aspx - person Mark Wagoner; 11.06.2014
comment
Но varbinary, похоже, не хранит все символы, только печатаемые. - person DaveL; 12.06.2014
comment
Какой метод использовать в C #, если я хочу снова преобразовать его в byte []? (от varbinary). Потому что у меня не работает varbinary. В нем хранятся только печатные символы. Может, можно привести пример? - person DaveL; 12.06.2014
comment
stackoverflow .com / questions / 4959253 / - person Mark Wagoner; 12.06.2014