Member 9983063 Ответов: 1

Я получаю ошибку это не строка в позиции 0


Привет, ребята, я работаю над проектом c#, и в этом проекте я хочу выбрать некоторые данные и показать в Datagridview, но у меня есть данные в моей БД, и у меня есть запрос select, но когда я нажимаю кнопку, так что я получаю этот тип ошибки это нет строки в позиции 0 пожалуйста, помогите мне, ребята, мне просто нужно доставить этот проект как можно скорее,
Спасибо.
вот несколько скриншотов https://imgur.com/PKvcgY9
https://imgur.com/aeq0weF
https://imgur.com/8AG3LZ4


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

dataGridView4.Columns.Add("", "Leave Consumed");
                dataGridView4.Columns.Add("", "Leave Allaowed");
                dataGridView4.Columns.Add("", "Balance");
                for (int i = 0; i < dataGridView4.Rows.Count; i++)
                {
                    DataSet ds1211122 = new DataSet();
                    DataTable dt1211122 = new DataTable();
                    ds1211122.Tables.Add(dt1211122);
                    OleDbDataAdapter da1211122 = new OleDbDataAdapter();
                    da1211122 = new OleDbDataAdapter("SELECT Sum(USERID) FROM [CHECKINOUT] where [CHECKTYPE]= '" + "I" + "'AND [USERID] = " + dataGridView4.Rows[0].Cells[1].Value.ToString() + "AND [CHECKTIME] Between #" + dateTimePicker2.Value.ToString() + "# AND #" + dateTimePicker1.Value.ToString() + "# Group By [USERID];", VCON);
                    da1211122.Fill(dt1211122);
                    int num = 0;
                    num = Convert.ToInt32(dt1211122.Rows[0][0].ToString());
                    VCON.Close();
                }

PIEBALDconsult

Я думаю, что вы смешиваете C# и VB.

1 Ответов

Рейтинг:
1

Patrice T

Цитата:
Ошибка: нет строки в позиции 0

Строка 0 os первая запись ответа select, что происходит, когда ответ пуст?
da1211122 = new OleDbDataAdapter("SELECT Sum(USERID) FROM [CHECKINOUT] where [CHECKTYPE]= '" + "I" + "'AND [USERID] = " + dataGridView4.Rows[0].Cells[1].Value.ToString() + "AND [CHECKTIME] Between #" + dateTimePicker2.Value.ToString() + "# AND #" + dateTimePicker1.Value.ToString() + "# Group By [USERID];", VCON);

Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]