Ошибка asp.net при получении из базы данных, когда строка запроса содержит номер - PullRequest
0 голосов
/ 23 февраля 2012

Я использую набор данных для извлечения некоторой информации из базы данных, например:

    protected DataSet getInfo() //getting the user info
{
    string id = Request.QueryString["User"];

    SqlCommand cmd = new SqlCommand("SELECT * FROM copy WHERE id=@id", conn());
    cmd.Parameters.AddWithValue("@id", id);

    DataSet ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(ds);

    return ds;
}

   cvPage.InnerHtml = getInfo().Tables[0].Rows[0]["cv"].ToString();
   clPage.InnerHtml = getInfo().Tables[0].Rows[0]["cl"].ToString();
   bioPage.InnerHtml = getInfo().Tables[0].Rows[0]["bio"].ToString();

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

QueryString["User"] = "111111"

Я получу неправильную синтаксическую ошибку:

Incorrect syntax near '111111'.

но если цифр нет, все будет хорошо.

моя база данных содержит четыре столбца:

id | varchar
cv | nvarchar
cl | nvarchar
bio | nvarchar

Я использую asp.net 4.0.

в чем проблема?

спасибо

1 Ответ

4 голосов
/ 23 февраля 2012
 SqlCommand cmd = new SqlCommand("SELECT * FROM copy WHERE id= CONVERT(varchar(4000), @id) ", conn());
...