2013-07-10 4 views
0

Я занимаюсь службой сокращения URL-адресов. Но в настоящее время я столкнулся с проблемой. Когда я попытался ввести URL, например:URL-адрес перенаправления из базы данных

HTTP:/локальный: 4021/книга/статья

Предполагается перенаправить меня к длинному URL, как, например:

http://www.google.com

Но когда я ввожу сокращенный URL-адрес, он не может перенаправляться.

Следующий мой код. Что не так?

string query; 
string name = Page.RouteData.Values["Name"] as string; 
string str = "Data Source=blankblankblank;Initial Catalog=URLSHORT;User ID=blank;Password=blank"; 
SqlConnection con = new SqlConnection(str); 
con.Open(); 
query = "SELECT @long_url FROM dbo.url_map WHERE @short_url='" + name + "'"; 
SqlCommand cmd = new SqlCommand(query, con); 
cmd.Parameters.Add("short_url", SqlDbType.VarChar).Value = tbShort.Text; 
cmd.Parameters.Add("long_url", SqlDbType.VarChar).Value = tbLong.Text; 
cmd.CommandText = string.Format("SELECT @long_url FROM dbo.url_map WHERE @short_url='" + name + "'"); 
if(name != null) 
{ 
    else if (name == cmd.ExecuteNonQuery().ToString()) 
    { 
     Response.StatusCode = 303; 
     Response.Status = "303 Moved Permanently"; 
     Response.RedirectLocation = "http://www.youtube.com"; 
     Response.End(); 
    } 
+1

Пожалуйста, убедитесь, что ваш образец несколько верен. Прямо сейчас есть некоторый недостающий код в 'if (name! = Null) ...'. –

+1

вся ваша программа неверна. ExecuteNonQuery() не работает с оператором select и что заставляет вас писать строку запроса дважды @ qU3st – Rezoan

+0

Можете ли вы опубликовать свой фактический код? Кажется, что вещи пропали без вести. Например, есть два '{' s и один '}'. –

ответ

3

В базе данных может быть сделан поиск с учетом регистра. Однако я считаю, что проблема заключается в том, что вы используете «ExecuteNonQuery», который не возвращает никаких результатов, когда вы должны использовать, например, «ExecuteScalar».

+1

+1 на предложение использовать [ExecuteScalar] (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.aspx). Немного неправильно в 'ExecuteNonQuery': он возвращает количество удаленных строк (не полезно в случае' SELECT') –

+0

Да, моя проблема решена. Благодарю. Не осознал такую ​​маленькую ошибку. Спасибо, что указали это. – qU3st

Смежные вопросы