-1

я использую набор данных, чтобы получить некоторую информацию из базы данных, как это:asp.net ошибка извлечения из базы данных, когда строка запроса содержит номер

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

    SqlCommand cmd = new SqlCommand("SELECT * FROM copy WHERE [email protected]", 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

Вам действительно нужно 'id' быть' varchar'? –

+0

Используйте профайлер sql server, чтобы узнать, какой именно запрос выполняется за сценой. – Beatles1692

+0

@AbeMiessler - да, это должен быть варчар. но я уже пробовал CAST как int и не работал. – Wahtever

ответ

4
SqlCommand cmd = new SqlCommand("SELECT * FROM copy WHERE id= CONVERT(varchar(4000), @id) ", conn()); 
+0

Я попытался преобразовать в строку, int, но без эффекта – Wahtever

+0

Отредактировано. Попробуйте. –

+0

попробовал это без везения. – Wahtever