C#,SQLreader /命令出现问题

时间:2011-09-12 12:34:07

标签: c# sql visual-studio-2010 sqlcommand

我对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 个答案:

答案 0 :(得分:2)

它不起作用,因为你的SQL坏了:

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

您期望WHERE子句做什么,以及您尝试使用哪些值?看起来你从更新命令中获得了一个损坏的复制/粘贴。

此外,您不应该像这样将值放入SQL中 - 您应该使用参数化查询来避免SQL注入攻击(并避免格式化问题等)。

答案 1 :(得分:2)

您的查询看起来像是从曾经是INSERT语句的内容中复制而来的;您不需要在语句末尾使用VALUES...子句。尝试将query更改为:

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

然后修改此代码以使用参数:

SqlCommand com = new SqlCommand(query, myCon);
com.Parameters.AddWithValue("@streg", streg);

答案 2 :(得分:1)

雅,肯定会给。为什么要将Values放入select查询中?这是错误的语法,立即尝试。

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