Не берет или не выводит цифры из БД

luserz

Client
Регистрация
07.09.2016
Сообщения
121
Благодарностей
5
Баллы
18
Есть таблица
----------------------------
id | text | id_pric | cena |
----------------------------
1 | test | 386 | 42000|
----------------------------

Вот такой запрос берет значение из колонки "text" где "id=1" и выводит это в лог. Там где есть текст все выводится отлично.
C#:
string count = db.getOne("SELECT text FROM test WHERE id=1");
project.SendInfoToLog("Кол-во аккаунтов: "+count,true); // выводим в лог ZP
Если я хочу получить к примеру значение из колонки "id_pric " или "cena" где "id=1", то в лог ничего не выводит.
C#:
string count = db.getOne("SELECT cena FROM test WHERE id=1");
project.SendInfoToLog("Кол-во аккаунтов: "+count,true); // выводим в лог ZP
Если в ячейке цифра ничего не выводится. Пробовал и кубиком и C#. Почему так происходит?
 

luserz

Client
Регистрация
07.09.2016
Сообщения
121
Благодарностей
5
Баллы
18
Если выставляешь столбцу "Тип=text" и "Сравнение=utf8mb4_general_ci", то результат выводится. Почему с "Тип=int" и числовыми типами это не работает?
 

Вложения

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 302
Благодарностей
702
Баллы
113
Если выставляешь столбцу "Тип=text" и "Сравнение=utf8mb4_general_ci", то результат выводится. Почему с "Тип=int" и числовыми типами это не работает?
Я конечно не эксперт по написанию запросов, но может надо вот так?

C#:
int count = db.getOne("SELECT cena FROM test WHERE id=1");
project.SendInfoToLog("Кол-во аккаунтов: "+count.ToString(),true); // выводим в лог ZP
 

luserz

Client
Регистрация
07.09.2016
Сообщения
121
Благодарностей
5
Баллы
18
Я конечно не эксперт по написанию запросов, но может надо вот так?

C#:
int count = db.getOne("SELECT cena FROM test WHERE id=1");
project.SendInfoToLog("Кол-во аккаунтов: "+count.ToString(),true); // выводим в лог ZP
Пробовал и Ваше решение.
И такого плана:

C#:
var count = db.getOne("SELECT cena FROM test WHERE id=1");
count = Convert.ToString(count);
project.SendInfoToLog("Кол-во аккаунтов: "+count,true); // выводим в лог ZP
Тут ошибка явной типизации
C#:
int count = db.getOne("SELECT cena FROM test WHERE id=1");
count = Convert.ToString(count);
project.SendInfoToLog("Кол-во аккаунтов: "+count,true); // выводим в лог ZP
Много вариантов перепробовал не выводится. C# на уровне плинтуса знаю. Затыка только в этом. Подскажите как правильно преобразовать.
 

luserz

Client
Регистрация
07.09.2016
Сообщения
121
Благодарностей
5
Баллы
18
Это тоже не работает:

C#:
// все что идет ниже выполняется в рамках одного коннекта/сессии ... это очень важно (!)

string count = db.getOne("SELECT cena FROM test WHERE id=1");

project.SendInfoToLog("Кол-во аккаунтов: "+count.ToString(),true); // выводим в лог ZP
C#:
// все что идет ниже выполняется в рамках одного коннекта/сессии ... это очень важно (!)

string count = (string)db.getOne("SELECT cena FROM test WHERE id=1");

project.SendInfoToLog("Кол-во аккаунтов: "+count.ToString(),true); // выводим в лог ZP
C#:
// все что идет ниже выполняется в рамках одного коннекта/сессии ... это очень важно (!)

string count = (string)db.getOne("SELECT cena FROM test WHERE id=1");

project.SendInfoToLog("Кол-во аккаунтов: "+count,true); // выводим в лог ZP
 

luserz

Client
Регистрация
07.09.2016
Сообщения
121
Благодарностей
5
Баллы
18
На сколько я понял все данные mysql отдает как string. Даже если для колонки установлен ТИП int(11). Это видно даже если явно задать вывод через запрос
C#:
int count = db.getOne("SELECT cena::INT FROM test WHERE id=1");
выходит ошибка, что нельзя преобразовать string в int. Нашел информацию, что можно преобразовывать string в int через методы Parse or TryParse, но это также не сработало. Кто сталкивался?
 

Alex91

Активный пользователь
Регистрация
15.08.2024
Сообщения
327
Благодарностей
83
Баллы
28
Попробуй результат запроса помешать в таблицу. И уже из таблицы брать правильные типы данных. ИИ с этим норм разберется, только уточни ему, какой способ работы с базой ты используешь, а то он накидает тебе 100500 вариантов высоко/низкоуровневого кода :-)
 

luserz

Client
Регистрация
07.09.2016
Сообщения
121
Благодарностей
5
Баллы
18
Попробуй результат запроса помешать в таблицу. И уже из таблицы брать правильные типы данных. ИИ с этим норм разберется, только уточни ему, какой способ работы с базой ты используешь, а то он накидает тебе 100500 вариантов высоко/низкоуровневого кода :-)
Я уже отчаялся и тоже так думал, но основная моя мысль в начале проекта была не задействовать списки и таблицы во избежание ошибок. Сделал примерно такой же финт, но через переменную зенки. В общем все колонки в Mysql привел к "Типу=text" и "Сравнение=utf8mb4_general_ci". Беру число из базы, записываю в переменную зенки, беру из переменной зенки и далее делаю с ней все, что захочу.) Проверено на сложение в С#. Все работает. Конечно это не правильно с точки зрения полного написания кода на C# без зенки, но в данном случае для меня это победа т.к до освоения C# еще далеко.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)