C #, проблема с SQLreader / командой - PullRequest
0 голосов
/ 12 сентября 2011

У меня проблемы с SqlDataReader:

public string GetVareNavn(string streg)
    {
        string navn = "";
        SqlConnection myCon = DBcon.getInstance().conn();

        string query =
            "SELECT Navn FROM Vare WHERE Stregkode = ) Values('" + streg + "')";

        myCon.Open();
        SqlCommand com = new SqlCommand(query, myCon);
        Console.WriteLine("navn: "+navn);
        SqlDataReader dr = com.ExecuteReader();
        if (dr.Read())
        {
            navn = dr.GetString(1);
        }
        myCon.Close();
        return navn;
    }

Выдает исключение на com.ExecutiveReader();, а исключение:

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

Я не знаю, почему этот не работает сейчас, потому что я использовал его в другом проекте.

Ответы [ 3 ]

2 голосов
/ 12 сентября 2011

Ваш запрос выглядит так, как будто он был скопирован из чего-то, что раньше было INSERT оператором; вам не нужно выражение VALUES... в конце оператора. Попробуйте изменить query на:

string query =
    "SELECT Navn FROM Vare WHERE Stregkode = @streg";

Затем измените этот код, чтобы использовать параметр:

SqlCommand com = new SqlCommand(query, myCon);
com.Parameters.AddWithValue("@streg", streg);
2 голосов
/ 12 сентября 2011

Это не работает, потому что ваш SQL не работает:

SELECT Navn FROM Vare WHERE Stregkode = ) Values('" + streg + "')"

Что вы ожидали от этого предложения WHERE и какие значения вы пытаетесь использовать? Похоже, у вас битая копия / вставка из команды обновления.

Кроме того, в любом случае вам не следует помещать значения в ваш SQL - вы должны использовать параметризованные запросы, чтобы избежать атак с использованием SQL-инъекций (и избежать проблем с форматированием и т. Д.).

1 голос
/ 12 сентября 2011

Я, конечно, это даст.Почему вы ставите Values в запросе select?неправильный синтаксис, попробуйте сейчас.

string query = "SELECT Navn FROM Vare WHERE Stregkode = '" + streg + "'";
...