【问题标题】:Redirect URL from database从数据库重定向 URL
【发布时间】:2016-10-29 03:55:20
【问题描述】:

我正在做 URL 缩短服务。但目前我面临一个问题。当我尝试输入网址时,例如:

http://localhost:4021/书/文章

它应该将我重定向到长 URL,例如:

http://www.google.com

但是当我输入缩短的网址时,它无法重定向。

以下是我的代码。怎么了?

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();
    }

【问题讨论】:

  • 请确保您的样本有些正确。现在if(name != null)... 中缺少一些代码。
  • 你的整个程序都错了。 ExecuteNonQuery() 不适用于 select 语句,是什么让您两次编写查询字符串 @qU3st
  • 你能发布你的实际代码吗?好像少了什么东西。例如,有两个{s 和一个}

标签: c# asp.net database url-shortener


【解决方案1】:

数据库可能正在执行区分大小写的搜索。但是,我认为问题在于您使用的是“ExecuteNonQuery”,当您应该使用例如“ExecuteScalar”时它不会返回任何结果。

【讨论】:

  • +1 建议使用ExecuteScalarExecuteNonQuery 有点错误:它返回受影响的行数(在 SELECT 的情况下没有用)
  • 是的,我的问题解决了。谢谢。没想到这么小的错误。谢谢指出。
猜你喜欢
  • 1970-01-01
  • 2015-07-31
  • 2015-07-26
  • 2015-01-23
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 2022-12-29
  • 1970-01-01
相关资源
最近更新 更多