Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171

Тип данных для номера телефона

22.02.2021, 19:25. Показов 5018. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вставляю в БД номер телефона из maskedTextBox1, маска: (999) 000-0000, получаю:

System.Data.SqlClient.SqlException (0x80131904): Символьные или двоичные данные могут быть усечены.
Выполнение данной инструкции было прервано.

В форме:
C#
1
2
 myCommand.Parameters.Add("@Phone", SqlDbType.Char, 25);
                myCommand.Parameters["@Phone"].Value = Phone;
В БД уже тип данных поставил nvarchar(MAX) для этого поля, всё равно не влезает.

Чего ему не хватает ?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.02.2021, 19:25
Ответы с готовыми решениями:

Тип данных для номера телефона
Здравствуйте. Возник такой вопрос. На форме есть текстбатон, для номера телефона, через него заполняються данные в бд. Так вот, какой тип...

Регулярка для поиска номера телефона
Привет ! Сделал такую регулярку: const string myReg1 = @"((\+38|8)?)?(?\d{3}??)?{6,14}"; Она не ловит все варианты...

Регулярное выражение для номера телефона
Здравствуйте, имеется вот такая строка: "1-1: 79998887755 2-12: 79964448833 8-43: 79924834703" Надо "1-1" засунуть в...

11
 Аватар для Kazbek17
1483 / 938 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
22.02.2021, 21:41
7-2-3,
Читаем. nvarchar(MAX)

String. Поток переменной длины из символов кодировки Юникод. В нем может быть от 1 до 4 000 символов. Неявное преобразование не может быть выполнено, если длина строки превышает 4 000 символов. Поэтому при работе со строками длиннее 4 000 символов нужно явно задавать значение этого объекта. Используйте NVarChar, если столбец базы данных имеет тип nvarchar(max).
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
22.02.2021, 21:51
Простой вопрос.
Если известен формат числа (а он известен - 10 цифр), зачем хранить в БД все эти скобки и тире, нужные лишь для отображения на клиенте ?
0
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
22.02.2021, 22:19  [ТС]
Ну допустим бы я записал их сплошными цифрами, а как потом на клиенте отобразить список из этих телефонов ?
Их же удобнее видеть с тире и скобочками.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
22.02.2021, 23:58
Лучший ответ Сообщение было отмечено 7-2-3 как решение

Решение

Цитата Сообщение от 7-2-3 Посмотреть сообщение
Ну допустим бы я записал их сплошными цифрами, а как потом на клиенте отобразить список из этих телефонов
1. Получить с Select :
SELECT CAST('(' + SUBSTRING(Tnum,1,3) + ')' + ' ' +SUBSTRING(Tnum,4,3) + '-' + SUBSTRING(Tnum,7,4) AS VARCHAR(MAX) AS Tnum
2 На форме положить не 1 бокс, а 3, в которые и положить нарезанный номер. Скобки и тире нарисовать лабельками. В этом случае Select трогать не нужно.

Добавлено через 2 минуты
Для автопрыжков между боксами (ввел три цифры - фокус автоматически прыгнул в следующий бокс) - обработка события onkeydown для всех трех боксов с небольшой логикой. Но это - если нужно.
1
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
23.02.2021, 11:09  [ТС]
А если список в DataGridView ?

Добавлено через 3 часа 41 минуту
Вернул значение на тип Char, вспомнил что у меня там ещё в триггере указан тип данных.
Но переосмыслил написанное выше, и правда, зачем пихать в базу лишние символы, только вот остался вопрос, допустим как список этих телефонов в DataGridview вывести, с символами для разграничения.
0
 Аватар для Kazbek17
1483 / 938 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
23.02.2021, 12:05
Цитата Сообщение от 7-2-3 Посмотреть сообщение
допустим как список этих телефонов в DataGridview вывести, с символами для разграничения.
Вам же показали выше, как вывести из базы запросом.
SQL
1
SELECT CAST('(' + SUBSTRING(Tnum,1,3) + ')' + ' ' +SUBSTRING(Tnum,4,3) + '-' + SUBSTRING(Tnum,7,4) AS VARCHAR(MAX) AS Tnum FROM MyTABLE
1
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
23.02.2021, 12:39  [ТС]
А , да. Не внимательно посмотрел на запрос.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
23.02.2021, 13:24
Цитата Сообщение от 7-2-3 Посмотреть сообщение
только вот остался вопрос, допустим как список этих телефонов в DataGridview вывести, с символами для разграничения.
Можно даже не трогая датасет. У грида есть свойства и события, управляющие отрисовкой содержимого ячеек. Можно, например, вместо "м" и "ж" (то, что в базе) рисовать в ячейке силуэты как на туалетах

Важно учитывать возможность редактирования в гриде. Если она должны быть, то логика несколько усложняется, потому что должно быть два режима "отображение" и "ввод".

Добавлено через 1 минуту
Цитата Сообщение от 7-2-3 Посмотреть сообщение
А , да. Не внимательно посмотрел на запрос
Учтите, что если использовать подобные запросы (удобно для отображения), то грид будет не редактируемым априори.
1
Эксперт .NET
 Аватар для Usaga
14090 / 9308 / 1348
Регистрация: 21.01.2016
Сообщений: 34,962
23.02.2021, 17:16
MsGuns, номер телефона состоит из цифр, но числом не является. Арифметические операции над номерами телефонов смысла не имеют. Поэтому nvarchar для хранения номера самое то.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
23.02.2021, 17:45
Цитата Сообщение от Usaga Посмотреть сообщение
но числом не является.
А из чего Вы взяли, что я назвал номер телефона числом ?
0
Эксперт .NET
 Аватар для Usaga
14090 / 9308 / 1348
Регистрация: 21.01.2016
Сообщений: 34,962
24.02.2021, 06:05
MsGuns, ну, если не рассматривать номер телефона как число, то и избавляться от скобок и тире может не иметь смысла. Разве что искать по номеру удобнее может стать. И то...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.02.2021, 06:05
Помогаю со студенческими работами здесь

Неверное регулярное выражение для номера телефона
using System; using System.Text.RegularExpressions; namespace Dictionary { /// <summary> /// Компания. ///...

Регулярные выражения для номера телефона с кодом
Всем привет В общем, нужно ввести номер телефона с кодом и при выводе этого номера на экран выделить этот код цветом Вот мой код, но...

C# регулярное выражение для формирования номера телефона
Всем привет! Что-то никак не могу составить регулярное выражение, для удаления лишних символов из строки, которая являеться номером...

Как задать маску для номера мобильного телефона?
Здравствуйте! Скажите, как можно задать маску для номера мобильного телефона в модели или в представлении? Чтоб было в текстбоксе +7( )...

Набор номера телефона для осуществления разговора через гарнитуру компьютера
Господа, доброго времени суток! Столкнулся с задачей написания программы, основной функцией которой является набор номера телефона для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru