我对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();
处引发异常,例外是:
')'附近的语法不正确。
我不知道为什么这个现在不起作用,因为我在另一个项目中使用过它。
答案 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 + "'";