Где ошибка в моем синтаксисе?Получение значений из базы данных SQL Server - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь прочитать целое число из базы данных SQL Server по тексту в выпадающих списках. Я получаю "Синтаксическая ошибка" рядом с именем моей таблицы "Seeweg". Отладчик не выделяет строку, где происходит ошибка.

Столбец со значением, которое мне нравится получать, называется seadistance. Другие столбцы, по которым производится сортировка: start и ziel.

Они сортируются по значениям, записанным в выпадающих списках.

Чтобы воспроизвести эту процедуру, я вставил код в класс и вызвал экземпляр с помощью кнопки с именем btnSea.

Я уже искал похожие проблемы, но не смог найти никаких синтаксических ошибок, касающихся реализации строк. Имена столбцов правильные.

//The Button
private void btnSea_Click(object sender, EventArgs e)
        {
            Entnehmen CO2 = new Entnehmen();
            int Dist = CO2.Werte("Seeweg", "start", "ziel", "seadistance", comboSeaOrig.Text, comboSeaDest.Text);
            MessageBox.Show(Dist.ToString());
        }
//The class
class Entnehmen
{
        public int Werte(string Tabelle, string Reihe1, string Reihe2, string Wertereihe, string WertReihe1, string WertReihe2)
        {
            int Wert = 0;
            string myConnection = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;Connect Timeout=30";

            using (SqlConnection myConn = new SqlConnection(myConnection))
            {
                myConn.Open();
                SqlCommand SelectCommand = new SqlCommand("SELECT '" + Wertereihe + "' FROM '" + Tabelle + "' WHERE '" + Reihe1 + "' = '" + WertReihe1 + "' AND '" + Reihe2 + "' = '" + WertReihe2 + "' ; ", myConn);
                Wert = (int)SelectCommand.ExecuteScalar();
            }
            return Wert;
        }
    }
}

Я ожидаю, что значение будет возвращено. Прежде чем это произойдет, я получаю сообщение об ошибке:

Неверный синтаксис рядом с 'Seeweg'

Где синтаксическая ошибка? Любая помощь приветствуется =)

1 Ответ

2 голосов
/ 26 июня 2019

Вы генерируете что-то вроде:

SELECT 'seadistance' FROM 'Seeweg' WHERE 'start' = 'aa' AND 'ziel' = 'bbb'

Это недопустимый оператор T-SQL. Исправьте ваши кавычки в столбцах и таблицах переменных.

Это предложение о том, как вы можете написать свой T-SQL Statemant на основе вашего кода:

SqlCommand SelectCommand = new SqlCommand("SELECT " + Wertereihe + " FROM " + Tabelle + " WHERE " + Reihe1 + " = '" + WertReihe1 + "' AND " + Reihe2 + " = '" + WertReihe2 + "' ; ", myConn);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...