C#主页相关问题。 (的Request.QueryString [ “ID”])

时间:2011-02-18 01:41:43

标签: c# mysql

我目前正在为一个公会的主页工作,该公会将在不久的将来以裂缝出现并运行,因此我试图尽快完成主页。

反正!我通常在VB.NET中编程主页,我编程应用程序时编程c#。但要在c#中变得更好,我选择用c#编程主页。

所以继承我的问题,我正在尝试制作一个foreach,它可以提取与地址栏中id相关的所有数据库内容,所以如果我的地址栏显示“ShowTopics.aspx?id = 1”那么一切都在在数据库中具有数字1的表(我使用一个名为fldovertopicid的字段,所以当有人在超文本中添加一个新的主题,然后它得到与顶视id相同的数字。)被拉出。虽然问题在于它似乎像vb.net编程一样容易实现工作。

所以继承我的代码:

在这段代码中我给这个方法命名,这样当我稍后在我的代码中写下这个名字时,就会知道它应该做什么。你可以看到我把'Where fldOverTopicID =“+ id;'所以我告诉代码我想使用fldOverTopicID作为中介,以便代码知道当地址栏号码与fldOverTopicID匹配时,它应该用相同的号码取出所有内容。

public DataTable GetUnderTopics(int id)
    {
        string strsql = "select fldid, fldtopicname, fldicon, fldcreator from tbltopics where fldOverTopicId=" + id;
        MySqlCommand objCMD = new MySqlCommand(strsql);

        return _objdata.GetData(objCMD, _con);
    }

这是我想要提取主题的后端代码。我试图告诉它在这里做的是,如果地址栏中的数字是1,那么它应该提取其fldOverTopicID中有1的所有内容。但这是我得到了我的问题。当我制作那段代码时,我得到了2个错误:

  1. 'Forumfac.GetUnderTopics(int)'的最佳重载方法匹配有一些无效的参数

  2. 参数1:无法从'string'转换为'int'

        Forumfac objfac = new Forumfac();
    
        foreach (DataRow row in objfac.GetUnderTopics(Request.QueryString["id"]).Rows)
        {
        }
    
  3. 希望我能够清楚地解释我的问题。

    提前致谢

3 个答案:

答案 0 :(得分:3)

试试这个

string idFromQueryString = Request.QueryString["id"];

if (! string.IsNullOrEmpty( idFromQueryString))
{
  int id = Convert.ToInt32(idFromQueryString );
  Forumfac objfac = new Forumfac();

  foreach (DataRow row in objfac.GetUnderTopics(id).Rows)
  {
  }
}

答案 1 :(得分:2)

使用objFac.GetUnderTopics(int.Parse(Request.Querystring["id"]))

您正在对以int作为参数的方法进行无效调用。所有查询字符串参数都是字符串。 int.Parse(string)将字符串中的值转换为整数,或者如果字符串不是整数则抛出异常。还有一个TryParse(string, out int)方法,它返回字符串是否可以转换并且不会抛出异常。

答案 2 :(得分:1)

我投票支持StackOverflowException的答案,因为它应该有效。但如果我写这篇文章,我会像这样使用TryParse ......

int id;
if (int.TryParse(Request.QueryString["id"], out id))
{
  Forumfac objfac = new Forumfac();

  foreach (DataRow row in objfac.GetUnderTopics(id).Rows)
  {
  }
}

如果无法解析id,它只需少一步,它将保证可靠的结果。