Member 11572517 Ответов: 2

Граф нет. Посещения из БД по SQL-запросу?


я хочу, чтобы всего нет посещенных пациентов.
я делаю следующий код в c# как:
OleDbCommand vst = new OleDbCommand("select count(*) from old_patient where Contact_no=@Contact_no GROUP BY Contact_no", cn);
                        vst.Parameters.Add(new OleDbParameter("@Contact_no", txtsno.Text));

                        //  store value in rec variable.
                        int rec = (int)vst.ExecuteNonQuery();
                        lbldtr.Text = rec.ToString();


txtsno - это текстовое поле;
lbldtr-это метка, на которой я хочу показать или распечатать ответ.

в текстовом поле txtsno контакта нет. Итак,я хочу получить конкретный контакт № визит.

заранее благодарю вас

Что я уже пробовал:

OleDbCommand vst = new OleDbCommand("select count(*) from old_patient where Contact_no=@Contact_no GROUP BY Contact_no", cn);
                        vst.Parameters.Add(new OleDbParameter("@Contact_no", txtsno.Text));

                        //  store value in rec variable.
                        int rec = (int)vst.ExecuteNonQuery();
                        lbldtr.Text = rec.ToString();

2 Ответов

Рейтинг:
6

Karthik_Mahalingam

использовать Executescalar так [^]
ExecuteNonQuery вернет количество затронутых строк, а не фактическое значение, которое вы хотите вернуть.

int rec = (int)vst.ExecuteScalar();


Suvendu Shekhar Giri

Просто и прямо :)
5ед!

Karthik_Mahalingam

Спасибо SSG :)

Member 11572517

спасибо вам обоим, сэр.........

Karthik_Mahalingam

добро пожаловать :)

Maciej Los

5ед!

Karthik_Mahalingam

Спасибо Мацей

Рейтинг:
13

Suvendu Shekhar Giri

Вы, вероятно, забыли написать свою проблему в вопросе.
Глядя на ваш код, он имеет следующие ошибки
1. Запрос представляется неправильным

select count(*) from old_patient where Contact_no=@Contact_no GROUP BY Contact_no

Так и должно быть-
select count(*) from old_patient where Contact_no=@Contact_no

2. вы должны использовать ExecuteScalar вместо ExecuteNonQuery
int rec = (int)vst.ExecuteNonQuery();

так и должно быть-
int rec = (int)vst.ExecuteScalar();

Вот подробная статья для детального прочтения-
Разница между ExecuteReader ExecuteScalar и ExecuteNonQuery[^]

Надеюсь, это поможет :)
Если вы обнаружите дальнейшие трудности, пожалуйста, дайте мне знать.


Karthik_Mahalingam

5. гораздо лучше и чище.

Suvendu Shekhar Giri

Спасибо @Картик :)

Member 11572517

оба эксперта U supeerb, это ясно. спасибо и так muchhhhhhhhhhhhhhhhhhhhhh.

Suvendu Shekhar Giri

Спасибо за эти добрые слова :)
Рад, что это помогло решить вашу проблему.

Maciej Los

5ед!

Suvendu Shekhar Giri

Спасибо :)